Javascript serialize form

When you can not use javascript libraries like jQuery, MooTools, Dojo, YUI or Prototype, and their built-in functions, but still want a quick and easy way to serialize forms, you need a function like that one. This is the reason to write this function. Get the code or view demo.

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("&");
}

Добави във Facebook | Добави във Twitter

Тази статия беше публикувана в четвъртък, 02 септември 2010, 22:43 в категориите javascript. Можете да следите всички коментари към статията като се абонирате за: RSS 2.0 feed. Коментарите са временно спряни, но можете да trackback от своя собствен сайт.

One Response to “Javascript serialize form”

  1. riverside: Javascript Form Serialize - edno23.com Says:

    [...] Form Serialize http://www.bulgaria-web-developers.com/blog/2…lize-form/ в Любими преди 1 минута edno23.com Начало контакти [...]