1(function () { 2 var forms = document.querySelectorAll('form[data-w3forms]'); 3 4 forms.forEach(function (form) { 5 var wrapper = form.closest('.w-form') || form.parentElement; 6 var successEl = wrapper && wrapper.querySelector('.w-form-done'); 7 var failEl = wrapper && wrapper.querySelector('.w-form-fail'); 8 var submitBtn = form.querySelector('input[type="submit"], button[type="submit"]'); 9 var defaultText = submitBtn ? (submitBtn.value || submitBtn.textContent) : ''; 10 var waitText = submitBtn ? submitBtn.getAttribute('data-wait') : ''; 11 12 function setBtn(text, disabled) { 13 if (!submitBtn) return; 14 submitBtn.disabled = !!disabled; 15 if (submitBtn.tagName === 'INPUT') submitBtn.value = text; 16 else submitBtn.textContent = text; 17 } 18 19 form.addEventListener('submit', function (e) { 20 e.preventDefault(); 21 22 if (failEl) failEl.style.display = 'none'; 23 if (waitText) setBtn(waitText, true); 24 25 var payload = Object.fromEntries(new FormData(form)); 26 27 fetch('https://api.web3forms.com/submit', { 28 method: 'POST', 29 headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' }, 30 body: JSON.stringify(payload) 31 }) 32 .then(function (r) { return r.json().then(function (d) { return { ok: r.ok, data: d }; }); }) 33 .then(function (res) { 34 if (res.ok && res.data && res.data.success) { 35 form.style.display = 'none'; 36 if (successEl) successEl.style.display = 'block'; 37 } else { 38 console.error('[forms] Submission failed', res); 39 if (failEl) { 40 var msg = res.data && res.data.message; 41 if (msg) { 42 var msgEl = failEl.querySelector('div') || failEl; 43 msgEl.textContent = 'Oops! ' + msg; 44 } 45 failEl.style.display = 'block'; 46 } 47 setBtn(defaultText, false); 48 } 49 }) 50 .catch(function (err) { 51 console.error('[forms] Network error', err); 52 if (failEl) failEl.style.display = 'block'; 53 setBtn(defaultText, false); 54 }); 55 }); 56 }); 57})();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.