Last active
October 30, 2023 06:00
-
-
Save iamspark1e/d4f7968c0c4ef8933c09ec02560cd7d6 to your computer and use it in GitHub Desktop.
Javascript Form Serialize with pure JS, modified from "https://code.google.com/archive/p/form-serialize/"
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| function serialize(form, hashmode) { | |
| if (!form || form.nodeName !== "FORM") { | |
| return | |
| } | |
| var i, j, q = []; | |
| var hashmap = {}; | |
| for (i = form.elements.length - 1; i >= 0; i = i - 1) { | |
| if (form.elements[i].name === "") { | |
| continue | |
| } | |
| switch (form.elements[i].nodeName) { | |
| case 'INPUT': | |
| switch (form.elements[i].type) { | |
| case 'text': | |
| case 'hidden': | |
| case 'password': | |
| case 'button': | |
| case 'reset': | |
| case 'submit': | |
| q.push(form.elements[i].name + "=" + encodeURIComponent(form.elements[i].value)); | |
| hashmap[form.elements[i].name] = form.elements[i].value; | |
| break; | |
| case 'checkbox': | |
| if (form.elements[i].checked) { | |
| q.push(form.elements[i].name + "[]=" + encodeURIComponent(form.elements[i].value)); | |
| // hashmap[form.elements[i].name] = form.elements[i].value | |
| if(hashmap[form.elements[i].name]) { | |
| hashmap[form.elements[i].name].push(form.elements[i].value) | |
| } else { | |
| hashmap[form.elements[i].name] = [form.elements[i].value] | |
| } | |
| } | |
| break; | |
| case 'radio': | |
| if (form.elements[i].checked) { | |
| q.push(form.elements[i].name + "=" + encodeURIComponent(form.elements[i].value)); | |
| hashmap[form.elements[i].name] = form.elements[i].value | |
| } | |
| break; | |
| case 'file': | |
| break | |
| } | |
| break; | |
| case 'TEXTAREA': | |
| q.push(form.elements[i].name + "=" + encodeURIComponent(form.elements[i].value)); | |
| hashmap[form.elements[i].name] = 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)); | |
| hashmap[form.elements[i].name] = form.elements[i].value; | |
| break; | |
| case 'select-multiple': | |
| for (j = form.elements[i].options.length - 1; j >= 0; j = j - 1) { | |
| if (form.elements[i].options[j].selected) { | |
| q.push(form.elements[i].name + "=" + encodeURIComponent(form.elements[i].options[j].value)); | |
| hashmap[form.elements[i].name] = form.elements[i].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)); | |
| hashmap[form.elements[i].name] = form.elements[i].value; | |
| break | |
| } | |
| break | |
| } | |
| } | |
| if (hashmode) return hashmap; | |
| return q.join("&") | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| function serialize(e,s){if(e&&"FORM"===e.nodeName){var n,t,l=[],m={};for(n=e.elements.length-1;n>=0;n-=1)if(""!==e.elements[n].name)switch(e.elements[n].nodeName){case"INPUT":switch(e.elements[n].type){case"text":case"hidden":case"password":case"button":case"reset":case"submit":l.push(e.elements[n].name+"="+encodeURIComponent(e.elements[n].value)),m[e.elements[n].name]=e.elements[n].value;break;case"checkbox":e.elements[n].checked&&(l.push(e.elements[n].name+"[]="+encodeURIComponent(e.elements[n].value)),m[e.elements[n].name]?m[e.elements[n].name].push(e.elements[n].value):m[e.elements[n].name]=[e.elements[n].value]);break;case"radio":e.elements[n].checked&&(l.push(e.elements[n].name+"="+encodeURIComponent(e.elements[n].value)),m[e.elements[n].name]=e.elements[n].value)}break;case"TEXTAREA":l.push(e.elements[n].name+"="+encodeURIComponent(e.elements[n].value)),m[e.elements[n].name]=e.elements[n].value;break;case"SELECT":switch(e.elements[n].type){case"select-one":l.push(e.elements[n].name+"="+encodeURIComponent(e.elements[n].value)),m[e.elements[n].name]=e.elements[n].value;break;case"select-multiple":for(t=e.elements[n].options.length-1;t>=0;t-=1)e.elements[n].options[t].selected&&(l.push(e.elements[n].name+"="+encodeURIComponent(e.elements[n].options[t].value)),m[e.elements[n].name]=e.elements[n].value)}break;case"BUTTON":switch(e.elements[n].type){case"reset":case"submit":case"button":l.push(e.elements[n].name+"="+encodeURIComponent(e.elements[n].value)),m[e.elements[n].name]=e.elements[n].value}}return s?m:l.join("&")}} |
Author
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
2023.10.30 adapt same name multi-checkbox.