Skip to content

Instantly share code, notes, and snippets.

@c7x43t
Last active April 29, 2018 11:08
Show Gist options
  • Save c7x43t/90ed60c55b4c9b1ee6e6314431ecf885 to your computer and use it in GitHub Desktop.
Save c7x43t/90ed60c55b4c9b1ee6e6314431ecf885 to your computer and use it in GitHub Desktop.
serialize <input>
function serialize(form){
if (!form || form.nodeName !== "FORM") return;
var el, op, obj = {}, name, type, value, node;
for (el of form.elements) {
name=el.name;
if (name === "") continue;
type=el.type;
value=el.value;
node=el.nodeName;
if(/INPUT/.exec(node) && (/text|hidden|password|button|reset|submit/.exec(type) || /checkbox|radio/.exec(type)&&el.checked) ||
/TEXTAREA/.exec(node) ||
/SELECT/.exec(node) && /select-one/.exec(node) ||
/BUTTON/.exec(node) && /reset|submit|button/.exec(type)){
obj[name] = encodeURIComponent(value);
}else if(/SELECT/.exec(node) && /select-multiple/.exec(node)){
for (op of el.options) {
if (op.selected) {
obj[name] = encodeURIComponent(op.value);
}
}
}
}
return obj;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment