0

jQuery を使用する場合、$.serialize()または$.serializeArray()シリアル化されている入力フィールド (属性) のタイプを取得することは可能ですか? 明らかに、ヘッダーで入力名を送信しますが、次のように取得できるかどうか疑問に思っています: textarea, input type="text", input type="radio"?

4

2 に答える 2

1

これはどう?

var allInputs = $("#myform *:input").map(function (i,e)
                     {
                         return {id: $(e).attr("id"),
                                 name: $(e).attr("name"),
                                 type: $(e).attr("type"),
                                 tag: $(e).get(0).tagName
                                };
                     }
                     );

http://jsfiddle.net/cranio/6uBLQ/を参照してください

次の形式のオブジェクトが得られます。

[{id: "c", name: "x" tag: "TEXTAREA" type: undefined},
{id: "a", name: "z", tag: "INPUT", type: "text"}, 
{id: "b", name: "y", tag: "INPUT", type: "hidden"},
...]

そこから、ID を使用して入力を参照し、タグやタイプに基づいてさまざまなアクションを実行したり、このオブジェクトをシリアル化して送信したりできます。非表示、SELECT、TEXTAREA で動作します...

于 2012-06-23T19:05:53.817 に答える
0

フォームの入力プロパティを任意の構造に簡単に操作できます。2つの味はこちら

デモ: http://jsfiddle.net/zd3Pc/

/* array of element objects */
var formMap = $.map($('form :input'), function(el, idx) {
    return {
        type: el.type,
        value: el.value,
        name: el.name
    };
});

/* object with arrays of name and value properties within type property */

var formObj = {}
$('form :input').each(function() {
    if (!formObj[this.type]) {
        formObj[this.type] = [];
    }
    formObj[this.type].push({
        name: this.name,
        value: this.value
    })
})
于 2012-06-23T19:24:33.860 に答える