jq 將form表單中的資料轉為json

廣鐵小多多發表於2018-03-17
/**
 * 獲取提交的資料
 * @param obj
 * @returns {{}}
 */
m.getParameterMap = function (obj) {
    var setmultivalue = function (val, name, value) {
        if (!value)value = '';
        if (val[name] === undefined) {
            val[name] = value;
        } else {
            if (val[name].constructor == Array) {
                val[name].push(value)
            } else {
                var v = val[name];
                val[name] = [];
                val[name].push(v)
                val[name].push(value)
            }
        }
    };
    var val = {};
    obj.find('input').each(function () {
        if (!this.name || !this.type) {
            return
        }
        var type = this.type;
        if (type == 'checkbox' || type == 'radio') {
            if (this.checked) {
                setmultivalue(val, this.name, this.value);
            }
            return;
        }
        setmultivalue(val, this.name, this.value);
    });
    obj.find('select').each(function () {
        var value = $(this).val();
        if (value && value.constructor == Array) {
            value = value[0];
        }
        setmultivalue(val, this.name, value);
    });
    obj.find('textarea').each(function () {
        var va = $.trim($(this).val());
        setmultivalue(val, this.name, va);
    });
    obj.find('img').each(function () {
    if (!this.name) {
            return
        }
        var va = $.trim($(this).attr('src'));
        setmultivalue(val, this.name, va);
    })


    return val;

};

// 測試

var data = m.getParameterMap($("#form1"));

console.info("表單資料data:",data);


相關文章