0

テキスト入力には配列スタイルの名前があります (name="post[2][id]")。この構造名を使用して、jQuery スクリプトでこの値を取得する必要があります。通常の配列として作業できるように。

$(document).ready(function(){   
    var data = {};
    data['post'] = {};

    var fields = $("#user input");

    $.each(fields, function(index, field) {
        data[$(field).attr('name')] = $(field).val();
    });

    console.log(data);
});


<div id="user">
    <input type="text" name="name" value="Joy" />
    <input type="text" name="post[1][id]" value="2" />
    <input type="text" name="post[1][name]" value="test" />
    <input type="text" name="post[2][id]" value="3" />
    <input type="text" name="post[2][name]" value="test 2" />
</div>

私の名前はデータ変数に文字列のように追加されるので、これは非常に悪いことです。私はこれを必要とする:

alert(data.post.1.id) // 2
4

1 に答える 1

2

簡潔な答え:

jQuery のセレクターを拡張せずに、jQuery のセレクターを利用できますcontains: http://api.jquery.com/attribute-contains-selector/

このような

$('input[name*="["][name*="]"]')

それを英語に翻訳すると、つまり、名前に含まれる s教えてください。input[]


長い答え:

短い答えは実用的に適切なはずです。

しかし、参考までに...

を重複して使用するの[name...]は、そのようなセレクターでワイルドカードを使用できないという 1 つの欠点によるものです。

もう 1 つの欠点は、厳密な発生順序を定義していないことです。たとえば、の名前post]1[も一致します。

名前が正しい文字列パターンであることを本当に確認する必要がある場合は、jQuery のセレクターを拡張して、より厳密な選択ルールの正規表現操作を実行できます。

ここに良いものがあります:http://james.padolsey.com/javascript/regex-selector-for-jquery/

于 2013-04-24T17:53:02.677 に答える