5

ユーザーがその行に対して特定のアクションを実行したい場合にその行をチェックするHTMLテーブルがあります。

行からキーデータを選択するロジックを作成するのではなく、入力チェックボックスのvalue属性にキー値を格納したいと思います。

私の質問は、これは合法ですか?

<input type="checkbox" value="{'id': 100, 'postcode': 'WA8 6QF'}" />

このようにして、jQueryセレクターを使用してチェックボックスを選択し、それらをループして、値JSONオブジェクトの項目を使用してアクションを実行できます。

4

5 に答える 5

13

HTML5data-*属性を使用できます。

<input type="checkbox" data-value='{"id": 100, "postcode": "WA8 6QF"}' />

var val = $('input:checkbox').data('value')
于 2012-07-06T19:39:31.527 に答える
2

その代わりに、次の.data()を使用できjQueryます。

$(':checkbox').data({'id': 100, 'postcode': 'WA8 6QF'});

同等のマークアップは次のとおりです。

<input type="checkbox" data-id="100" data-postcode="'WA8 6QF'" />

次に、次のように取得します。

$(':checkbox').data('id')   //100
$(':checkbox').data('postcode') //'WA8 6QF'
于 2012-07-06T19:40:31.577 に答える
1

要素のvalueinput:checkbox任意の文字列にすることができるため、JSONオブジェクトは完全に有効です。"適切にエンコードされたJSONオブジェクト(文字列を引用するためではなく')であり、HTMLで正しくエスケープされていることを確認する必要があります。

提供した例は無効なJSONです。

<input type="checkbox" value="{'id': 100, 'postcode': 'WA8 6QF'}" />

代わりに、次のものが必要です。

<input type="checkbox" value="{&quot;id&quot;:100,&quot;postcode&quot;:&quot;WA8 6QF&quot;}" />

ほとんどの人がこの種の使用を思いとどまらせるのは、この種のエンコーディングの問題が原因です。それ自体は何も悪いことではありませんが、見過ごされがちな間違いを犯すのは非常に簡単です。

とはいえ、単にデータを要素に関連付けたい場合は、jQueryのdataメソッドの方がはるかに使いやすく、エンコードについて心配する必要はありません。

さらに、サーバーから情報を渡す場合。jQueryのメソッドは、すべての属性dataから情報を引き出します。[data-*]

<input id="example" type="checkbox" data-id="100" data-postcode="WA8 6QF" value="...some value..." />
<script>//ideally in an external .js file rather than inline
    var exampleData = $('#example').data();
</script>

exampleDataになります:

{
    id: 100, //will even be nicely cast to a Number
    postcode: 'WA8 6QF'
}
于 2012-07-06T19:43:46.327 に答える
0

これをサーバーにPOSTする予定はありますか?

通常の_POST送信では、入力の非表示タグをペアにした可能性があります

<input type="checkbox" name="c1" />
<input type="hidden" name="d1" value="{'id': 100, 'postcode': 'WA8 6QF'}" />
于 2012-07-06T19:42:20.857 に答える
0

チェックボックス入力のvalue属性としてJSONオブジェクトを保存することは正当ですか?

"{'id': 100, 'postcode': 'WA8 6QF'}"結局のところ文字列です。

したがって、この文字列を保存することは正当です

ただし、有効なjsonではないため、後で使用できない場合があります。

だからこれを修正してください、あなたはすべきです、

<input type="checkbox" value='{"id": 100, "postcode": "WA8 6QF"}' />

(キーは二重引用符で囲む必要があります)

だから、できますが、すべきではありません。data他の人が説明したように属性を使用します。

于 2012-07-06T19:45:42.613 に答える