Advertisement
Guest User

Untitled

a guest
Apr 25th, 2019
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function validateHuman(honeypot) {
  2.     if (honeypot) { //if hidden form filled up
  3.         console.log("Robot Detected!");
  4.         return true;
  5.     } else {
  6.         return false
  7.     }
  8. }
  9.  
  10.  
  11.  
  12. function getFormData() {
  13.     var form = document.getElementById('gform');
  14.     var elements = form.elements; // all form elements
  15.  
  16.     var fields = Object.keys(elements).map(function(k) {
  17.         if (elements[k].name !== "honeypot") {
  18.             return elements[k].name;
  19.             // special case for Edge's html collection
  20.         } else if (elements[k].length > 0) {
  21.             return elements[k].item(0).name;
  22.         }
  23.     }).filter(function(item, pos, self) {
  24.         return self.indexOf(item) == pos && item;
  25.     });
  26.  
  27.     var data = {};
  28.     fields.forEach(function(k) {
  29.         data[k] = elements[k].value;
  30.         var str = ""; // declare empty string outside of loop to allow
  31.         // it to be appended to for each item in the loop
  32.         if (elements[k].type === "checkbox") { // special case for Edge's html collection
  33.             str = str + elements[k].checked + ", "; // take the string and append
  34.             // the current checked value to
  35.             // the end of it, along with
  36.             // a comma and a space
  37.             data[k] = str.slice(0, -2); // remove the last comma and space
  38.             // from the  string to make the output
  39.             // prettier in the spreadsheet
  40.         } else if (elements[k].length) {
  41.             for (var i = 0; i < elements[k].length; i++) {
  42.                 if (elements[k].item(i).checked) {
  43.                     str = str + elements[k].item(i).value + ", "; // same as above
  44.                     data[k] = str.slice(0, -2);
  45.                 }
  46.             }
  47.         }
  48.     });
  49.  
  50.     // add form-specific values into the data
  51.     data.formDataNameOrder = JSON.stringify(fields);
  52.     data.formGoogleSheetName = form.dataset.sheet || "responses"; // default sheet name, changed from responses
  53.  
  54.     console.log(data);
  55.     return data;
  56. }
  57.  
  58. function handleFormSubmit(event) { // handles form submit withtout any jquery
  59.     event.preventDefault(); // we are submitting via xhr below
  60.     var data = getFormData(); // get the values submitted in the form
  61.  
  62.     var url = event.target.action;
  63.     var xhr = new XMLHttpRequest();
  64.     xhr.open('POST', url);
  65.     xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
  66.     xhr.onreadystatechange = function() {
  67.         console.log(xhr.status, xhr.statusText)
  68.         console.log(xhr.responseText);
  69.         document.getElementById('entireForm').style.display = 'none'; // hide form
  70.         document.getElementById('formSubmittedMessage').style.display = 'block';
  71.         return;
  72.     };
  73.  
  74.     // url encode form data for sending as post data
  75.     var encoded = Object.keys(data).map(function(k) {
  76.         return encodeURIComponent(k) + '=' + encodeURIComponent(data[k])
  77.     }).join('&')
  78.  
  79.     xhr.send(encoded);
  80. }
  81.  
  82. function loaded() {
  83.     console.log('contact form submission handler loaded successfully');
  84.     // bind to the submit event of our form
  85.     var form = document.getElementById('gform');
  86.     form.addEventListener("submit", handleFormSubmit, false);
  87. }
  88.  
  89. document.addEventListener('DOMContentLoaded', loaded, false);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement