json化表单数据

/**

 * josn化表单数据

 * @name baidu.form.json

 * @function

 * @grammar baidu.form.json(form[, replacer])

 * @param {HTMLFormElement} form        需要提交的表单元素

 * @param {Function} replacer           对参数值特殊处理的函数,replacer(string value, string key)

	           

 * @returns {data} 表单数据js对象

 */

form.json = form.json || function (form, replacer) {

    var elements = form.elements,

        replacer = replacer || function (value, name) {

            return value;

        },

        data = {},

        item, itemType, itemName, itemValue, 

        opts, oi, oLen, oItem;

        

    /**

     * 向缓冲区添加参数数据

     * @private

     */

    function addData(name, value) {

        var val = data[name];

        if(val){

            val.push || ( data[name] = [val] );

            data[name].push(value);

        }else{

            data[name] = value;

        }

    }

    

    for (var i = 0, len = elements.length; i < len; i++) {

        item = elements[i];

        itemName = item.name;

        

        // 处理:可用并包含表单name的表单项

        if (!item.disabled && itemName) {

            itemType = item.type;

            itemValue = baidu.url.escapeSymbol(item.value);



            switch (itemType) {

            // radio和checkbox被选中时,拼装queryString数据

            case 'radio':

            case 'checkbox':

                if (!item.checked) {

                    break;

                }

                

            // 默认类型,拼装queryString数据

            case 'textarea':

            case 'text':

            case 'password':

            case 'hidden':

            case 'file':

            case 'select-one':

                addData(itemName, replacer(itemValue, itemName));

                break;

                

            // 多行选中select,拼装所有选中的数据

            case 'select-multiple':

                opts = item.options;

                oLen = opts.length;

                for (oi = 0; oi < oLen; oi++) {

                    oItem = opts[oi];

                    if (oItem.selected) {

                        addData(itemName, replacer(oItem.value, itemName));

                    }

                }

                break;

            }

        }

    }



    return data;

};

  

你可能感兴趣的:(json)