1

次のようなフォームがあります。

<input type="text" name="item[101][0][date]" value="2012" />
<input type="text" name="item[101][0][price]" value="10.00" />
<input type="text" name="item[101][0][colour]" value="orange" />
<input type="text" name="item[101][1][date]" value="2013" />
<input type="text" name="item[101][1][price]" value="5.00" />
<input type="text" name="item[101][1][colour]" value="blue" />

そして、最初の2つのキーから配列全体を選択し、すべてのロットをjavascriptに配列として保存して、AJAX経由でPHPに送信できるようにしたいと思います。

私は現在jQueryにこれを持っていますが、私が求めているものを生成していないようです。

var products = $('input[name~="item['+itemCode+']['+basketId+']"]');

ここで、itemCodeとbasketIdは、送信ボタン(機能しています)から取得されます。

「products」と呼ばれるこの配列を取得したら、それをシリアル化してPOSTリクエストとして送信する方法を知っていますが、次のような配列になってしまうことはないようです。

products[101][0][date] = 2012
products[101][0][price] = 10.00
products[101][0][colour] = orange

または:

products[101][1][date] = 2013
products[101][1][price] = 5.00
products[101][1][colour] = blue

これに関する助けをいただければ幸いです!

ありがとう!

4

2 に答える 2

2

名前に保存されているすべてのものではなく、data- * HTML5属性を使用して、さまざまなホルダーにデータを保存することをお勧めします。何かのようなもの:

<input type="text" data-category="101" data-index="0" data-id="date" value="2012" />

次に、選択は次の方法で実行されます。

var input = $('input[data-category=' + category + '][data-index=' + index + '][data-id=' + id + ']');

これにより、同じカテゴリのすべてのアイテムを簡単に選択したり、同じインデックスを使用したりすることもできます。

配列は次のように構成されます。

var products = [];
// Define category, index and id
products[category][index][id] = $('input[data-category=' + category + '][data-index=' + index + '][data-id=' + id + ']').val();
于 2012-09-14T14:04:13.443 に答える
0

属性に単語セレクター(name~=valueが含まれていることを使用しています。これは、必要なものとは少し異なることを行います。

このセレクターは、テスト文字列を属性値の各単語と照合します。ここで、「単語」は空白で区切られた文字列として定義されます。テスト文字列がいずれかの単語と完全に等しい場合、セレクターは一致します。

セレクター()で始まる属性を使用します。name^=value

var products = $('input[name^="item['+itemCode+']['+basketId+']"]');

属性containsselectorname*=value)を使用します。

var products = $('input[name*="item['+itemCode+']['+basketId+']"]');

デモ

于 2012-09-14T14:03:00.463 に答える