• 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;
    };
    

      

  • 相关阅读:
    具体解释协方差与协方差矩阵
    百度地图SDK for Android v2.1.3全新发布
    奇妙的等式
    Canny边缘检测及C++实现
    移动火柴问题
    移动火柴问题
    奇妙的等式 && 精妙的证明(二)
    奇妙的等式 && 精妙的证明(二)
    拉马努金恒等式
    拉马努金恒等式
  • 原文地址:https://www.cnblogs.com/xiaohui108/p/3716113.html
Copyright © 2020-2023  润新知