7

textのような名前の複雑な入力要素がありますproduct[1][combinations][x][price]。この要素はたくさんありますが、 after[combinations]と afterの値が異なるだけで名前が異なり[x]ます。

例えば:

product[1][price]
product[1][combinations][x][price]
product[1][combinations][xx][price]
product[1][combinations][xxx][price]
product[1][combinations][xxxx][price]

product[1][sale_price]
product[1][combinations][x][sale_price]
product[1][combinations][xx][sale_price]
product[1][combinations][xxx][sale_price]
product[1][combinations][xxxx][sale_price]

product[2][price]
product[2][combinations][a][price]
product[2][combinations][aa][price]
product[2][combinations][aaa][price]
product[2][combinations][aaaa][price]

product[2][sale_price]
product[2][combinations][a][sale_price]
product[2][combinations][aa][sale_price]
product[2][combinations][aaa][sale_price]
product[2][combinations][aaaa][sale_price]

上記の値xxxxxxxxxxおよびaaaaaaaaaaごとに一意の値を表しますproduct[id]。各グループの最初の定義 (product[2][sale_price]たとえば) は、値 i の親または所有者製品を表し、その子 (組み合わせ) にバッチ更新されます。

sale_priceたとえば、保存されている情報の種類に基づいてこれらの要素のグループを見つけて、その値を変更したいと思います。一意の値を考慮する必要がないので[x]、ワイルドカードを使用できることを望みました。

このようなものが問題を解決することを望みました(例):

$("input[name='product[1][combinations][*][price]'][type='text']").val(0);

ただし、*実際にはワイルドカードではないので、そのようには使用できません。

私はこのようなことができることを理解していますが、これ0は単にではなくすべての入力に割り当てられますsale_price:

$("input[name^='product[1][combinations]'][type='text']").val(0);

$("input[name='product[1][combinations][*][price]'][type='text']").val(0);this( ) セレクターを適切なワイルドカードに置き換えるにはどうすればよいですか? 可能であれば、名前配列の値を同じ順序に保ちたい

4

2 に答える 2

7

これがあなたが望むものかどうかはわかりません...しかし、$これで属性セレクターを使用すると、指定されたテキストで終わるすべての入力が選択されます...そのようになります

$("input[name$='[price]']").val(0);
$("input[name$='[sale_price]']").val(1);

上記のセレクターは実際には必要ありません[type='text']。名前が文字列で終わる要素を取得します...ただし、より具体的にして、入力のみが必要であることを確認したい場合は、問題ありません..同じものを追加できますここでも。

ここでフィドルの例

更新しました

次に、複数の属性セレクターを使用^して、指定した文字列で始まる要素を検索できます

$("input[name^='product[1]'][name$='[price]']").val(0);
$("input[name^='product[1]'][name$='[sale_price]']").val(1);

更新されたフィドル

于 2013-05-17T21:24:03.227 に答える