我做了serializeArray Custom。如何?

时间:2013-11-25 08:30:55

标签: javascript jquery

这是我的代码:

$.fn.serializeArrayCustom = function(options) {
    options = options || {
        selectors: [
            "input",
            "textarea",
            "select"
        ]
    };
    // this object
    var that = $(this);
    // return value
    var retVal = [];
    // string for jQuery selector
    var sel_string = "";

    // make string for selector
    for(var i in options.selectors) {
        sel_string += that.selector + " " + options.selectors[i] + ", ";
    }
    sel_string = sel_string.substring(0, sel_string.length - 2);

    // select all tags in this object
    var elem = $(sel_string);

    // add result at "return value : retVal"
    elem.each(function() {
        var obj = $(this);
        if(typeof(obj.attr("name")) != "undefined") {
            retVal.push({"name" : obj.attr("name"), "value" : typeof(obj.attr("value")) != "undefined" ? obj.attr("value") : ""});
        }
    });

    return retVal;
}

首先,对不起,简短的英语..

我之所以这样做是因为我想获取任何不在表单标签中的HTML标签的信息。 (对于ASP ..) 但是,此代码需要“名称”和“值”属性。

“options”(在我的代码中)应该是标记名称的数组,或者可以是jQuery选择器。 (但是如果你不能使用方法“.val()”获取值,你就无法收集信息)

默认:

[
    "input",
    "textarea",
    "select"
]

选项可以是:

[
    "input[name='test']",
    "select[name='can_use']",
    ...
]

此函数返回:

val = [{"name" : "(name_of_tags)", "value" : "(value_of_tags)"}],
...

我在Chrome中测试了这段代码。

告诉我应该做些什么来改进这段代码。

0 个答案:

没有答案