Skip to content

Instantly share code, notes, and snippets.

@tjcelaya
Last active August 29, 2015 14:11
Show Gist options
  • Save tjcelaya/4e0c7a6a5a0b0b771fba to your computer and use it in GitHub Desktop.
Save tjcelaya/4e0c7a6a5a0b0b771fba to your computer and use it in GitHub Desktop.
Manually Serialize a Simple Form
document.addEventListener('DOMContentLoaded', function() {
var formEl = document.querySelector('#the-form'),
serializeForm = function(el) {
var formData = {};
for (var i = 0, l = el.length; i < l; i++) {
var currentEl = el[i];
switch (currentEl.type) {
case 'hidden':
case 'text':
case 'email':
formData[currentEl.getAttribute('name')] = currentEl.value;
break;
case 'select-one':
formData[currentEl.getAttribute('name')] = currentEl.options[currentEl.selectedIndex].value;
break;
case 'checkbox':
if (currentEl.checked) {
formData[currentEl.getAttribute('name')] = '1';
} else {
formData[currentEl.getAttribute('name')] = '0';
}
break;
default:
console.error('I don\'t know how to deal with this thing you\'ve given me');
console.log(currentEl);
break;
}
}
return formData;
},
submitFormData = function(e) {
e.preventDefault();
var formData = serializeForm(formEl);
// DO WHATEVER OR SOMETHING
};
formEl.addEventListener('submit',submitFormData)
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment