web-dev-qa-db-ja.com

jquery-js配列名を持つすべてのチェックボックスを選択

次のような形式でJQueryの「すべてチェック」機能を使用したい: http://jetlogs.org/jquery/jquery_select_all.html

私の問題は、phpスクリプトからフォームを生成していることです。また、事前にチェックボックスがいくつあるか正確にわかりません。 $ _POSTデータで選択されたすべてのチェックボックス値を取得できるように、「配列」命名規則を使用しています...チェックボックスは次のようになります。

<input type="checkbox" name="items[]" value="<?php echo $id ?>">

しかし、このJQuery宣言は機能しません。

$("input[@name=items[]]").each(function()    
{    
    this.checked = checked_status;    
});

おそらく、「items」の最後の「[]」がJQuery宣言を台無しにするためです...「@ name = items []」のように@ name = items []と記述して、いくつかのアンチを入れようとしました-と[]の前にスラッシュを付けると、特殊文字とは見なされませんが、機能しませんでした...

誰かが解決策を知っていて、それを共有しても構わないとしたら、それは素晴らしいことです。 :)

23
Pierre

内部ブラケットを\\(スペースなし)でエスケープします-これで問題が解決するはずです。

このセレクターは私にとってはうまくいきます:

$('input[name=items\\[\\]]')
59
rochal

使ってみてください

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

@は不要で、"を使用します。引用符の外側のセレクタは'であることに注意してください。そうしないと、解析エラーが発生する可能性があります。

14
Emil Ivanov

まず、同じ名前の+1要素を設定するには、name属性を使用する必要があります。これは実質的にid属性と同じであり、参照を除いて要素ごとに一意である必要がありますが、そうではありません。

クラス属性を使用してみてください、それはあなたがやりたいことのために作られています!

別のことは、コードでは、チェックボックスを「チェック済み」にのみ設定できますが、チェックを外すことはできません。このコードは、クリックされた要素から属性として取得する内容に応じて、チェックボックスをオンまたはオフに設定します。

あなたはこのようなことをすることができます:

すべてのチェックボックスにIDを設定します

 <input type="checkbox" id="checkAll">

次に、クラスをオン/オフにするすべてのチェックボックスを設定します

<input type="checkbox" class="checked">

そして、あなたはjQueryでこのようなことをすることができます

$("#checkAll").click( function(){
 var checkedValue = $(this).attr("checked");
 $("input.checked").attr("checked", checkedValue); });

これにより、クラスがチェックされているすべてのチェックボックスが、id checkAllを持つものと同じchecked属性に変更されます。

4
Kennethvr
$("input[name='smsid[]']")

このコードは私にとってはうまくいきます...

2
Kannan Prasad