[text] Ellie

Viewer

  1. <style>
  2.  #_form_3_ { font-size:14px; line-height:1.6; font-family:arial, helvetica, sans-serif; margin:0; }
  3.  #_form_3_ * { outline:0; }
  4.  ._form_hide { display:none; visibility:hidden; }
  5.  ._form_show { display:block; visibility:visible; }
  6.  #_form_3_._form-top { top:0; }
  7.  #_form_3_._form-bottom { bottom:0; }
  8.  #_form_3_._form-left { left:0; }
  9.  #_form_3_._form-right { right:0; }
  10.  #_form_3_ input[type="text"],#_form_3_ input[type="tel"],#_form_3_ input[type="date"],#_form_3_ textarea { padding:6px; height:auto; border:#979797 1px solid; border-radius:4px; color:#000 !important; font-size:14px; -webkit-box-sizing:border-box; -moz-box-sizing:border-box; box-sizing:border-box; }
  11.  #_form_3_ textarea { resize:none; }
  12.  #_form_3_ ._submit { -webkit-appearance:none; cursor:pointer; font-family:arial, sans-serif; font-size:14px; text-align:center; background:#004cff !important; border:0 !important; -moz-border-radius:4px !important; -webkit-border-radius:4px !important; border-radius:4px !important; color:#fff !important; padding:10px !important; }
  13.  #_form_3_ ._close-icon { cursor:pointer; background-image:url('https://d226aj4ao1t61q.cloudfront.net/esfkyjh1u_forms-close-dark.png'); background-repeat:no-repeat; background-size:14.2px 14.2px; position:absolute; display:block; top:11px; right:9px; overflow:hidden; width:16.2px; height:16.2px; }
  14.  #_form_3_ ._close-icon:before { position:relative; }
  15.  #_form_3_ ._form-body { margin-bottom:30px; }
  16.  #_form_3_ ._form-image-left { width:150px; float:left; }
  17.  #_form_3_ ._form-content-right { margin-left:164px; }
  18.  #_form_3_ ._form-branding { color:#fff; font-size:10px; clear:both; text-align:left; margin-top:30px; font-weight:100; }
  19.  #_form_3_ ._form-branding ._logo { display:block; width:130px; height:14px; margin-top:6px; background-image:url('https://d226aj4ao1t61q.cloudfront.net/hh9ujqgv5_aclogo_li.png'); background-size:130px auto; background-repeat:no-repeat; }
  20.  #_form_3_ .form-sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0, 0, 0, 0); border:0; }
  21.  #_form_3_ ._form-label,#_form_3_ ._form_element ._form-label { font-weight:bold; margin-bottom:5px; display:block; }
  22.  #_form_3_._dark ._form-branding { color:#333; }
  23.  #_form_3_._dark ._form-branding ._logo { background-image:url('https://d226aj4ao1t61q.cloudfront.net/jftq2c8s_aclogo_dk.png'); }
  24.  #_form_3_ ._form_element { position:relative; margin-bottom:10px; font-size:0; max-width:100%; }
  25.  #_form_3_ ._form_element * { font-size:14px; }
  26.  #_form_3_ ._form_element._clear { clear:both; width:100%; float:none; }
  27.  #_form_3_ ._form_element._clear:after { clear:left; }
  28.  #_form_3_ ._form_element input[type="text"],#_form_3_ ._form_element input[type="date"],#_form_3_ ._form_element select,#_form_3_ ._form_element textarea:not(.g-recaptcha-response) { display:block; width:100%; -webkit-box-sizing:border-box; -moz-box-sizing:border-box; box-sizing:border-box; font-family:inherit; }
  29.  #_form_3_ ._field-wrapper { position:relative; }
  30.  #_form_3_ ._inline-style { float:left; }
  31.  #_form_3_ ._inline-style input[type="text"] { width:150px; }
  32.  #_form_3_ ._inline-style:not(._clear) + ._inline-style:not(._clear) { margin-left:20px; }
  33.  #_form_3_ ._form_element img._form-image { max-width:100%; }
  34.  #_form_3_ ._form_element ._form-fieldset { border:0; padding:0.01em 0 0 0; margin:0; min-width:0; }
  35.  #_form_3_ ._clear-element { clear:left; }
  36.  #_form_3_ ._full_width { width:100%; }
  37.  #_form_3_ ._form_full_field { display:block; width:100%; margin-bottom:10px; }
  38.  #_form_3_ input[type="text"]._has_error,#_form_3_ textarea._has_error { border:#f37c7b 1px solid; }
  39.  #_form_3_ input[type="checkbox"]._has_error { outline:#f37c7b 1px solid; }
  40.  #_form_3_ ._error { display:block; position:absolute; font-size:14px; z-index:10000001; }
  41.  #_form_3_ ._error._above { padding-bottom:4px; bottom:39px; right:0; }
  42.  #_form_3_ ._error._below { padding-top:4px; top:100%; right:0; }
  43.  #_form_3_ ._error._above ._error-arrow { bottom:0; right:15px; border-left:5px solid transparent; border-right:5px solid transparent; border-top:5px solid #f37c7b; }
  44.  #_form_3_ ._error._below ._error-arrow { top:0; right:15px; border-left:5px solid transparent; border-right:5px solid transparent; border-bottom:5px solid #f37c7b; }
  45.  #_form_3_ ._error-inner { padding:8px 12px; background-color:#f37c7b; font-size:14px; font-family:arial, sans-serif; color:#fff; text-align:center; text-decoration:none; -webkit-border-radius:4px; -moz-border-radius:4px; border-radius:4px; }
  46.  #_form_3_ ._error-inner._form_error { margin-bottom:5px; text-align:left; }
  47.  #_form_3_ ._button-wrapper ._error-inner._form_error { position:static; }
  48.  #_form_3_ ._error-inner._no_arrow { margin-bottom:10px; }
  49.  #_form_3_ ._error-arrow { position:absolute; width:0; height:0; }
  50.  #_form_3_ ._error-html { margin-bottom:10px; }
  51.  .pika-single { z-index:10000001 !important; }
  52.  #_form_3_ input[type="text"].datetime_date { width:69%; display:inline; }
  53.  #_form_3_ select.datetime_time { width:29%; display:inline; height:32px; }
  54.  #_form_3_ input[type="date"].datetime_date { width:69%; display:inline-flex; }
  55.  #_form_3_ input[type="time"].datetime_time { width:29%; display:inline-flex; }
  56.  @media all and (min-width:320px) and (max-width:667px) { ::-webkit-scrollbar { display:none; }
  57.  #_form_3_ { margin:0; width:100%; min-width:100%; max-width:100%; box-sizing:border-box; }
  58.  #_form_3_ * { -webkit-box-sizing:border-box; -moz-box-sizing:border-box; box-sizing:border-box; font-size:1em; }
  59.  #_form_3_ ._form-content { margin:0; width:100%; }
  60.  #_form_3_ ._form-inner { display:block; min-width:100%; }
  61.  #_form_3_ ._form-title,#_form_3_ ._inline-style { margin-top:0; margin-right:0; margin-left:0; }
  62.  #_form_3_ ._form-title { font-size:1.2em; }
  63.  #_form_3_ ._form_element { margin:0 0 20px; padding:0; width:100%; }
  64.  #_form_3_ ._form-element,#_form_3_ ._inline-style,#_form_3_ input[type="text"],#_form_3_ label,#_form_3_ p,#_form_3_ textarea:not(.g-recaptcha-response) { float:none; display:block; width:100%; }
  65.  #_form_3_ ._row._checkbox-radio label { display:inline; }
  66.  #_form_3_ ._row,#_form_3_ p,#_form_3_ label { margin-bottom:0.7em; width:100%; }
  67.  #_form_3_ ._row input[type="checkbox"],#_form_3_ ._row input[type="radio"] { margin:0 !important; vertical-align:middle !important; }
  68.  #_form_3_ ._row input[type="checkbox"] + span label { display:inline; }
  69.  #_form_3_ ._row span label { margin:0 !important; width:initial !important; vertical-align:middle !important; }
  70.  #_form_3_ ._form-image { max-width:100%; height:auto !important; }
  71.  #_form_3_ input[type="text"] { padding-left:10px; padding-right:10px; font-size:16px; line-height:1.3em; -webkit-appearance:none; }
  72.  #_form_3_ input[type="radio"],#_form_3_ input[type="checkbox"] { display:inline-block; width:1.3em; height:1.3em; font-size:1em; margin:0 0.3em 0 0; vertical-align:baseline; }
  73.  #_form_3_ button[type="submit"] { padding:20px; font-size:1.5em; }
  74.  #_form_3_ ._inline-style { margin:20px 0 0 !important; }
  75.  }
  76.  #_form_3_ { position:relative; text-align:left; margin:25px auto 0; padding:20px; -webkit-box-sizing:border-box; -moz-box-sizing:border-box; box-sizing:border-box; *zoom:1; background:#fff !important; border:0px solid #b0b0b0 !important; max-width:500px; -moz-border-radius:0px !important; -webkit-border-radius:0px !important; border-radius:0px !important; color:#000 !important; }
  77.  #_form_3_ ._form-title { font-size:22px; line-height:22px; font-weight:600; margin-bottom:0; }
  78.  #_form_3_:before,#_form_3_:after { content:" "; display:table; }
  79.  #_form_3_:after { clear:both; }
  80.  #_form_3_._inline-style { width:auto; display:inline-block; }
  81.  #_form_3_._inline-style input[type="text"],#_form_3_._inline-style input[type="date"] { padding:10px 12px; }
  82.  #_form_3_._inline-style button._inline-style { position:relative; top:27px; }
  83.  #_form_3_._inline-style p { margin:0; }
  84.  #_form_3_._inline-style ._button-wrapper { position:relative; margin:27px 12.5px 0 20px; }
  85.  #_form_3_ ._form-thank-you { position:relative; left:0; right:0; text-align:center; font-size:18px; }
  86.  @media all and (min-width:320px) and (max-width:667px) { #_form_3_._inline-form._inline-style ._inline-style._button-wrapper { margin-top:20px !important; margin-left:0 !important; }
  87.  }
  88.  #_form_3_ .iti.iti--allow-dropdown.iti--separate-dial-code { width:100%; }
  89.  #_form_3_ .iti input { width:100%; height:32px; border:#979797 1px solid; border-radius:4px; }
  90.  #_form_3_ .iti--separate-dial-code .iti__selected-flag { background-color:#fff; border-radius:4px; }
  91.  #_form_3_ .iti--separate-dial-code .iti__selected-flag:hover { background-color:rgba(0, 0, 0, 0.05); }
  92.  #_form_3_ .iti__country-list { border-radius:4px; margin-top:4px; min-width:460px; }
  93.  #_form_3_ .iti__country-list--dropup { margin-bottom:4px; }
  94.  #_form_3_ .phone-error-hidden { display:none; }
  95.  #_form_3_ .phone-error { color:#e40e49; }
  96.  #_form_3_ .phone-input-error { border:1px solid #e40e49 !important; }
  97. </style>
  98. <link href="https://fonts.googleapis.com/css2?family=Lato&family=Montserrat&family=Roboto&family=IBM+Plex+Sans:wght@400;600&display=swap" rel="stylesheet">
  99.   <link rel="stylesheet" type="text/css" href="https://unpkg.com/[email protected]/build/css/intlTelInput.min.css"/>
  100.     <form method="POST" action="//achichiedo-newsletter.koodit.it/proc.php" id="_form_3_" class="_form _form_3 _inline-form  _dark" novalidate>
  101.       <input type="hidden" name="u" value="3" />
  102.       <input type="hidden" name="f" value="3" />
  103.       <input type="hidden" name="s" />
  104.       <input type="hidden" name="c" value="0" />
  105.       <input type="hidden" name="m" value="0" />
  106.       <input type="hidden" name="act" value="sub" />
  107.       <input type="hidden" name="v" value="2" />
  108.       <input type="hidden" name="or" value="fef2eed87d9b3d5a6c95d8ddf14ab57c" />
  109.       <div class="_form-content">
  110.         <div class="_form_element _x18865362 _full_width " >
  111.           <label for="email" class="_form-label">
  112.             Email*
  113.           </label>
  114.           <div class="_field-wrapper">
  115.             <input type="text" id="email" name="email" placeholder="Digita l&#039;email" required/>
  116.           </div>
  117.         </div>
  118.         <div class="_form_element _x57250305 _full_width " >
  119.           <fieldset class="_form-fieldset">
  120.             <div class="_row">
  121.               <legend for="field[1][]" class="_form-label">
  122.                 Privacy Policy
  123.               </legend>
  124.             </div>
  125.             <input data-autofill="false" type="hidden" id="field[1][]" name="field[1][]" value="~|">
  126.             <div class="_row _checkbox-radio">
  127.               <input id="field_1Ho letto la Privacy Policy" type="checkbox" name="field[1][]" value="Ho letto la Privacy Policy"   >
  128.               <span>
  129.                 <label for="field_1Ho letto la Privacy Policy">
  130.                   Ho letto la Privacy Policy
  131.                 </label>
  132.               </span>
  133.             </div>
  134.           </fieldset>
  135.         </div>
  136.         <div class="_button-wrapper _full_width">
  137.           <button id="_form_3_submit" class="_submit" type="submit">
  138.             Invia
  139.           </button>
  140.         </div>
  141.         <div class="_clear-element">
  142.         </div>
  143.       </div>
  144.       <div class="_form-thank-you" style="display:none;">
  145.       </div>
  146.       <div class="_form-branding">
  147.         <div class="_marketing-by">
  148.           Marketing a cura di
  149.         </div>
  150.         <a href="https://www.activecampaign.com/?utm_medium=referral&utm_campaign=acforms" class="_logo">
  151.           <span class="form-sr-only">
  152.             ActiveCampaign
  153.           </span>
  154.         </a>
  155.       </div>
  156.     </form><script type="text/javascript">
  157. window.cfields = {"1":"privacy_policy"};
  158. window._show_thank_you = function(id, message, trackcmp_url, email) {
  159.   var form = document.getElementById('_form_' + id + '_'), thank_you = form.querySelector('._form-thank-you');
  160.   form.querySelector('._form-content').style.display = 'none';
  161.   thank_you.innerHTML = message;
  162.   thank_you.style.display = 'block';
  163.   const vgoAlias = typeof visitorGlobalObjectAlias === 'undefined' ? 'vgo' : visitorGlobalObjectAlias;
  164.   var visitorObject = window[vgoAlias];
  165.   if (email && typeof visitorObject !== 'undefined') {
  166.     visitorObject('setEmail', email);
  167.     visitorObject('update');
  168.   } else if (typeof(trackcmp_url) != 'undefined' && trackcmp_url) {
  169.     // Site tracking URL to use after inline form submission.
  170.     _load_script(trackcmp_url);
  171.   }
  172.   if (typeof window._form_callback !== 'undefined') window._form_callback(id);
  173. };
  174. window._show_error = function(id, message, html) {
  175.   var form = document.getElementById('_form_' + id + '_'), err = document.createElement('div'), button = form.querySelector('button'), old_error = form.querySelector('._form_error');
  176.   if (old_error) old_error.parentNode.removeChild(old_error);
  177.   err.innerHTML = message;
  178.   err.className = '_error-inner _form_error _no_arrow';
  179.   var wrapper = document.createElement('div');
  180.   wrapper.className = '_form-inner';
  181.   wrapper.appendChild(err);
  182.   button.parentNode.insertBefore(wrapper, button);
  183.   document.querySelector('[id^="_form"][id$="_submit"]').disabled = false;
  184.   if (html) {
  185.     var div = document.createElement('div');
  186.     div.className = '_error-html';
  187.     div.innerHTML = html;
  188.     err.appendChild(div);
  189.   }
  190. };
  191. window._load_script = function(url, callback) {
  192.   var head = document.querySelector('head'), script = document.createElement('script'), r = false;
  193.   script.type = 'text/javascript';
  194.   script.charset = 'utf-8';
  195.   script.src = url;
  196.   if (callback) {
  197.     script.onload = script.onreadystatechange = function() {
  198.       if (!r && (!this.readyState || this.readyState == 'complete')) {
  199.         r = true;
  200.         callback();
  201.       }
  202.     };
  203.   }
  204.   head.appendChild(script);
  205. };
  206. (function() {
  207.   if (window.location.search.search("excludeform") !== -1) return false;
  208.   var getCookie = function(name) {
  209.     var match = document.cookie.match(new RegExp('(^|; )' + name + '=([^;]+)'));
  210.     return match ? match[2] : null;
  211.   }
  212.   var setCookie = function(name, value) {
  213.     var now = new Date();
  214.     var time = now.getTime();
  215.     var expireTime = time + 1000 * 60 * 60 * 24 * 365;
  216.     now.setTime(expireTime);
  217.     document.cookie = name + '=' + value + '; expires=' + now + ';path=/; Secure; SameSite=Lax;';// cannot be HttpOnly
  218.   }
  219.       var addEvent = function(element, event, func) {
  220.     if (element.addEventListener) {
  221.       element.addEventListener(event, func);
  222.     } else {
  223.       var oldFunc = element['on' + event];
  224.       element['on' + event] = function() {
  225.         oldFunc.apply(this, arguments);
  226.         func.apply(this, arguments);
  227.       };
  228.     }
  229.   }
  230.   var _removed = false;
  231.   var form_to_submit = document.getElementById('_form_3_');
  232.   var allInputs = form_to_submit.querySelectorAll('input, select, textarea'), tooltips = [], submitted = false;
  233.  
  234.   var getUrlParam = function(name) {
  235.     var params = new URLSearchParams(window.location.search);
  236.     return params.get(name) || false;
  237.   };
  238.  
  239.   for (var i = 0; i < allInputs.length; i++) {
  240.     var regexStr = "field\\[(\\d+)\\]";
  241.     var results = new RegExp(regexStr).exec(allInputs[i].name);
  242.     if (results != undefined) {
  243.       allInputs[i].dataset.name = window.cfields[results[1]];
  244.     } else {
  245.       allInputs[i].dataset.name = allInputs[i].name;
  246.     }
  247.     var fieldVal = getUrlParam(allInputs[i].dataset.name);
  248.  
  249.     if (fieldVal) {
  250.       if (allInputs[i].dataset.autofill === "false") {
  251.         continue;
  252.       }
  253.       if (allInputs[i].type == "radio" || allInputs[i].type == "checkbox") {
  254.         if (allInputs[i].value == fieldVal) {
  255.           allInputs[i].checked = true;
  256.         }
  257.       } else {
  258.         allInputs[i].value = fieldVal;
  259.       }
  260.     }
  261.   }
  262.  
  263.   var remove_tooltips = function() {
  264.     for (var i = 0; i < tooltips.length; i++) {
  265.       tooltips[i].tip.parentNode.removeChild(tooltips[i].tip);
  266.     }
  267.     tooltips = [];
  268.   };
  269.   var remove_tooltip = function(elem) {
  270.     for (var i = 0; i < tooltips.length; i++) {
  271.       if (tooltips[i].elem === elem) {
  272.         tooltips[i].tip.parentNode.removeChild(tooltips[i].tip);
  273.         tooltips.splice(i, 1);
  274.         return;
  275.       }
  276.     }
  277.   };
  278.   var create_tooltip = function(elem, text) {
  279.     var tooltip = document.createElement('div'), arrow = document.createElement('div'), inner = document.createElement('div'), new_tooltip = {};
  280.     if (elem.type != 'radio' && elem.type != 'checkbox') {
  281.       tooltip.className = '_error';
  282.       arrow.className = '_error-arrow';
  283.       inner.className = '_error-inner';
  284.       inner.innerHTML = text;
  285.       tooltip.appendChild(arrow);
  286.       tooltip.appendChild(inner);
  287.       elem.parentNode.appendChild(tooltip);
  288.     } else {
  289.       tooltip.className = '_error-inner _no_arrow';
  290.       tooltip.innerHTML = text;
  291.       elem.parentNode.insertBefore(tooltip, elem);
  292.       new_tooltip.no_arrow = true;
  293.     }
  294.     new_tooltip.tip = tooltip;
  295.     new_tooltip.elem = elem;
  296.     tooltips.push(new_tooltip);
  297.     return new_tooltip;
  298.   };
  299.   var resize_tooltip = function(tooltip) {
  300.     var rect = tooltip.elem.getBoundingClientRect();
  301.     var doc = document.documentElement, scrollPosition = rect.top - ((window.pageYOffset || doc.scrollTop)  - (doc.clientTop || 0));
  302.     if (scrollPosition < 40) {
  303.       tooltip.tip.className = tooltip.tip.className.replace(/ ?(_above|_below) ?/g, '') + ' _below';
  304.     } else {
  305.       tooltip.tip.className = tooltip.tip.className.replace(/ ?(_above|_below) ?/g, '') + ' _above';
  306.     }
  307.   };
  308.   var resize_tooltips = function() {
  309.     if (_removed) return;
  310.     for (var i = 0; i < tooltips.length; i++) {
  311.       if (!tooltips[i].no_arrow) resize_tooltip(tooltips[i]);
  312.     }
  313.   };
  314.   var validate_field = function(elem, remove) {
  315.     var tooltip = null, value = elem.value, no_error = true;
  316.     remove ? remove_tooltip(elem) : false;
  317.     if (elem.type != 'checkbox') elem.className = elem.className.replace(/ ?_has_error ?/g, '');
  318.     if (elem.getAttribute('required') !== null) {
  319.       if (elem.type == 'radio' || (elem.type == 'checkbox' && /any/.test(elem.className))) {
  320.         var elems = form_to_submit.elements[elem.name];
  321.         if (!(elems instanceof NodeList || elems instanceof HTMLCollection) || elems.length <= 1) {
  322.           no_error = elem.checked;
  323.         }
  324.         else {
  325.           no_error = false;
  326.           for (var i = 0; i < elems.length; i++) {
  327.             if (elems[i].checked) no_error = true;
  328.           }
  329.         }
  330.         if (!no_error) {
  331.           tooltip = create_tooltip(elem, "Seleziona un\'opzione.");
  332.         }
  333.       } else if (elem.type =='checkbox') {
  334.         var elems = form_to_submit.elements[elem.name], found = false, err = [];
  335.         no_error = true;
  336.         for (var i = 0; i < elems.length; i++) {
  337.           if (elems[i].getAttribute('required') === null) continue;
  338.           if (!found && elems[i] !== elem) return true;
  339.           found = true;
  340.           elems[i].className = elems[i].className.replace(/ ?_has_error ?/g, '');
  341.           if (!elems[i].checked) {
  342.             no_error = false;
  343.             elems[i].className = elems[i].className + ' _has_error';
  344.             err.push("È necessario verificare %s".replace("%s", elems[i].value));
  345.           }
  346.         }
  347.         if (!no_error) {
  348.           tooltip = create_tooltip(elem, err.join('<br/>'));
  349.         }
  350.       } else if (elem.tagName == 'SELECT') {
  351.         var selected = true;
  352.         if (elem.multiple) {
  353.           selected = false;
  354.           for (var i = 0; i < elem.options.length; i++) {
  355.             if (elem.options[i].selected) {
  356.               selected = true;
  357.               break;
  358.             }
  359.           }
  360.         } else {
  361.           for (var i = 0; i < elem.options.length; i++) {
  362.             if (elem.options[i].selected && (!elem.options[i].value || (elem.options[i].value.match(/\n/g)))) {
  363.               selected = false;
  364.             }
  365.           }
  366.         }
  367.         if (!selected) {
  368.           elem.className = elem.className + ' _has_error';
  369.           no_error = false;
  370.           tooltip = create_tooltip(elem, "Seleziona un\'opzione.");
  371.         }
  372.       } else if (value === undefined || value === null || value === '') {
  373.         elem.className = elem.className + ' _has_error';
  374.         no_error = false;
  375.         tooltip = create_tooltip(elem, "Questo campo è obbligatorio.");
  376.       }
  377.     }
  378.     if (no_error && (elem.id == 'field[]' || elem.id == 'ca[11][v]')) {
  379.       if (elem.className.includes('phone-input-error')) {
  380.         elem.className = elem.className + ' _has_error';
  381.         no_error = false;
  382.       }
  383.     }
  384.     if (no_error && elem.name == 'email') {
  385.       if (!value.match(/^[\+_a-z0-9-'&=]+(\.[\+_a-z0-9-']+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,})$/i)) {
  386.         elem.className = elem.className + ' _has_error';
  387.         no_error = false;
  388.         tooltip = create_tooltip(elem, "Inserisci un indirizzo email valido.");
  389.       }
  390.     }
  391.     if (no_error && /date_field/.test(elem.className)) {
  392.       if (!value.match(/^\d\d\d\d-\d\d-\d\d$/)) {
  393.         elem.className = elem.className + ' _has_error';
  394.         no_error = false;
  395.         tooltip = create_tooltip(elem, "Inserisci una data valida.");
  396.       }
  397.     }
  398.     tooltip ? resize_tooltip(tooltip) : false;
  399.     return no_error;
  400.   };
  401.   var needs_validate = function(el) {
  402.         if(el.getAttribute('required') !== null){
  403.             return true
  404.         }
  405.         if(el.name === 'email' && el.value !== ""){
  406.             return true
  407.         }
  408.  
  409.     if((el.id == 'field[]' || el.id == 'ca[11][v]') && el.className.includes('phone-input-error')){
  410.             return true
  411.         }
  412.  
  413.         return false
  414.   };
  415.   var validate_form = function(e) {
  416.     var err = form_to_submit.querySelector('._form_error'), no_error = true;
  417.     if (!submitted) {
  418.       submitted = true;
  419.       for (var i = 0, len = allInputs.length; i < len; i++) {
  420.         var input = allInputs[i];
  421.         if (needs_validate(input)) {
  422.           if (input.type == 'tel') {
  423.             addEvent(input, 'blur', function() {
  424.               this.value = this.value.trim();
  425.               validate_field(this, true);
  426.             });
  427.           }
  428.           if (input.type == 'text' || input.type == 'number' || input.type == 'time') {
  429.             addEvent(input, 'blur', function() {
  430.               this.value = this.value.trim();
  431.               validate_field(this, true);
  432.             });
  433.             addEvent(input, 'input', function() {
  434.               validate_field(this, true);
  435.             });
  436.           } else if (input.type == 'radio' || input.type == 'checkbox') {
  437.             (function(el) {
  438.               var radios = form_to_submit.elements[el.name];
  439.               for (var i = 0; i < radios.length; i++) {
  440.                 addEvent(radios[i], 'click', function() {
  441.                   validate_field(el, true);
  442.                 });
  443.               }
  444.             })(input);
  445.           } else if (input.tagName == 'SELECT') {
  446.             addEvent(input, 'change', function() {
  447.               validate_field(this, true);
  448.             });
  449.           } else if (input.type == 'textarea'){
  450.             addEvent(input, 'input', function() {
  451.               validate_field(this, true);
  452.             });
  453.           }
  454.         }
  455.       }
  456.     }
  457.     remove_tooltips();
  458.     for (var i = 0, len = allInputs.length; i < len; i++) {
  459.       var elem = allInputs[i];
  460.       if (needs_validate(elem)) {
  461.         if (elem.tagName.toLowerCase() !== "select") {
  462.           elem.value = elem.value.trim();
  463.         }
  464.         validate_field(elem) ? true : no_error = false;
  465.       }
  466.     }
  467.     if (!no_error && e) {
  468.       e.preventDefault();
  469.     }
  470.     resize_tooltips();
  471.     return no_error;
  472.   };
  473.   addEvent(window, 'resize', resize_tooltips);
  474.   addEvent(window, 'scroll', resize_tooltips);
  475.  
  476.   var hidePhoneInputError = function(inputId) {
  477.     var errorMessage =  document.getElementById("error-msg-" + inputId);
  478.     var input = document.getElementById(inputId);
  479.     errorMessage.classList.remove("phone-error");
  480.     errorMessage.classList.add("phone-error-hidden");
  481.     input.classList.remove("phone-input-error");
  482.   };
  483.  
  484.   var initializePhoneInput = function(input, defaultCountry) {
  485.     return window.intlTelInput(input, {
  486.       utilsScript: "https://unpkg.com/[email protected]/build/js/utils.js",
  487.       autoHideDialCode: false,
  488.       separateDialCode: true,
  489.       initialCountry: defaultCountry,
  490.       preferredCountries: []
  491.     });
  492.   }
  493.  
  494.   var setPhoneInputEventListeners = function(inputId, input, iti) {
  495.     input.addEventListener('blur', function() {
  496.       var errorMessage = document.getElementById("error-msg-" + inputId);
  497.       if (input.value.trim()) {
  498.         if (iti.isValidNumber()) {
  499.           iti.setNumber(iti.getNumber());
  500.           if (errorMessage.classList.contains("phone-error")){
  501.             hidePhoneInputError(inputId);
  502.           }
  503.         } else {
  504.           showPhoneInputError(inputId)
  505.         }
  506.       } else {
  507.         if (errorMessage.classList.contains("phone-error")){
  508.           hidePhoneInputError(inputId);
  509.         }
  510.       }
  511.     });
  512.  
  513.     input.addEventListener("countrychange", function() {
  514.       iti.setNumber('');
  515.     });
  516.  
  517.     input.addEventListener("keydown", function(e) {
  518.         var charCode = (e.which) ? e.which : e.keyCode;
  519.         if (charCode > 31 && (charCode < 48 || charCode > 57) && charCode !== 8) {
  520.                e.preventDefault();
  521.       }
  522.      });
  523.   };
  524.  
  525.   var showPhoneInputError = function(inputId) {
  526.     var errorMessage =  document.getElementById("error-msg-" + inputId);
  527.     var input = document.getElementById(inputId);
  528.     errorMessage.classList.add("phone-error");
  529.     errorMessage.classList.remove("phone-error-hidden");
  530.     input.classList.add("phone-input-error");
  531.   };
  532.  
  533.  
  534.     var _form_serialize = function(form){if(!form||form.nodeName!=="FORM"){return }var i,j,q=[];for(i=0;i<form.elements.length;i++){if(form.elements[i].name===""){continue}switch(form.elements[i].nodeName){case"INPUT":switch(form.elements[i].type){case"tel":q.push(form.elements[i].name+"="+encodeURIComponent(form.elements[i].previousSibling.querySelector('div.iti__selected-dial-code').innerText)+encodeURIComponent(" ")+encodeURIComponent(form.elements[i].value));break;case"text":case"number":case"date":case"time":case"hidden":case"password":case"button":case"reset":case"submit":q.push(form.elements[i].name+"="+encodeURIComponent(form.elements[i].value));break;case"checkbox":case"radio":if(form.elements[i].checked){q.push(form.elements[i].name+"="+encodeURIComponent(form.elements[i].value))}break;case"file":break}break;case"TEXTAREA":q.push(form.elements[i].name+"="+encodeURIComponent(form.elements[i].value));break;case"SELECT":switch(form.elements[i].type){case"select-one":q.push(form.elements[i].name+"="+encodeURIComponent(form.elements[i].value));break;case"select-multiple":for(j=0;j<form.elements[i].options.length;j++){if(form.elements[i].options[j].selected){q.push(form.elements[i].name+"="+encodeURIComponent(form.elements[i].options[j].value))}}break}break;case"BUTTON":switch(form.elements[i].type){case"reset":case"submit":case"button":q.push(form.elements[i].name+"="+encodeURIComponent(form.elements[i].value));break}break}}return q.join("&")};
  535.   var form_submit = function(e) {
  536.     e.preventDefault();
  537.     if (validate_form()) {
  538.       // use this trick to get the submit button & disable it using plain javascript
  539.       document.querySelector('#_form_3_submit').disabled = true;
  540.             var serialized = _form_serialize(document.getElementById('_form_3_')).replace(/%0A/g, '\\n');
  541.       var err = form_to_submit.querySelector('._form_error');
  542.       err ? err.parentNode.removeChild(err) : false;
  543.       _load_script('//achichiedo-newsletter.koodit.it/proc.php?' + serialized + '&jsonp=true');
  544.     }
  545.     return false;
  546.   };
  547.   addEvent(form_to_submit, 'submit', form_submit);
  548. })();
  549.  
  550. </script>

Editor

You can edit this paste and save as new:


File Description
  • Ellie
  • Paste Code
  • 07 Dec-2022
  • 27.53 Kb
You can Share it: