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.

Revisions

  1. @chrisjlee chrisjlee revised this gist Jan 6, 2014. 1 changed file with 42 additions and 0 deletions.
    42 changes: 42 additions & 0 deletions serializeForm-alternate.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,42 @@
    // 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('&');

    }
  2. @chrisjlee chrisjlee created this gist Dec 27, 2013.
    60 changes: 60 additions & 0 deletions serialize.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,60 @@
    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("&");
    }