Skip to content

Instantly share code, notes, and snippets.

@chrisl8888
Last active January 1, 2016 13:09
Show Gist options
  • Save chrisl8888/8149432 to your computer and use it in GitHub Desktop.
Save chrisl8888/8149432 to your computer and use it in GitHub Desktop.
Stolen from: https://code.google.com/p/form-serialize/ Offers to serialize a form without a library and using only DOM scripting.
function serialize(form) {
if (!form || form.nodeName !== "FORM") {
return;
}
var i, j, q = [];
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));
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 = 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));
}
}
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("&");
}
// From: http://onwebdev.blogspot.com/2011/05/serializing-form-without-jquery.html
function serializeForm(form) {
form = document.getElementById(form) || document.forms[0];
var elems = form.elements;
var serialized = [], i, len = elems.length, str='';
for(i = 0; i < len; i += 1) {
var element = elems[i];
var type = element.type;
var name = element.name;
var value = element.value;
switch(type) {
case 'text':
case 'radio':
case 'checkbox':
case 'textarea':
case 'select-one':
str = name + '=' + value;
serialized.push(str);
break;
default:
break;
}
}
return serialized.join('&');
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment