2012-04-19 1 views
0

SQL 2008 Serverと最新のJQueryを使用しています。データベースから列を照会してリスト/配列を取得すると、各チェックボックスのチェックボックスにチェックマークを付けるにはどうすればよいですか?チェックボックスのグループとリストの例:データベースからのリスト/配列からチェックボックスをチェックするためにJQueryが必要です

カテゴリ '1,7,20'(Jqueryはチェックボックスに値1,7,10をチェックしてください) '2,3'のリスト(Jqueryはチェックボックスにチェックマークを付ける必要があります値2および3チェックされる)

<form> 
    <input type="checkbox" class="category" name="category" value="14" />Blah 
    <input type="checkbox" class="category" name="category" value="1" />Blah1 
    <input type="checkbox" class="category" name="category" value="7" />Blah2 
    <input type="checkbox" class="category" name="category" value="20" />Blah3 
    <input type="checkbox" class="likes" name="likes" value="17" />Apple 
    <input type="checkbox" class="likes" name="likes" value="3" />Apple1 
    <input type="checkbox" class="likes" name="likes" value="2" />Apple2 
    <input type="checkbox" class="likes" name="likes" value="13" />Apple3 
</form> 

は、私は、次のjQueryコードを試してみましたが、それは動作しません:

$.each(['1,7,20'], function (index, item) { 
    if ($('.category').val() === item) { 
     $(".category").prop("checked", true); 
    } 
}); 

答えて

2

あなたは文字列1,7,20ある単一の要素を持つ配列を渡しています、 th番目の要素を持つ配列ではない文字列17、および20が含まれているので、なぜそれが動作するのかはわかりません。あなたの入力は、実際には文字列である場合は、文字列としてあなたの番号の配列を取得するために、カンマでそれを分割することができます:

var myString = '1,7,20'; 
var myArray = myString.split(','); 

その後$.each()関数呼び出しにmyArrayを渡します。

$.each()に渡された関数内のコードにも問題があります。複数の要素を含むjQueryオブジェクトで.val()を呼び出すと、通常の最初の要素の値が返されます。要素のコレクションについてもう一度繰り返し、現在の要素を参照するにはthisを使用する必要があります。

$.each(myArray, function(index, item){ 
    $('.category').each(function(){ 
     if(this.value === item) { 
      this.checked = true; 
     } 
    }); 
}); 
+0

配列として文字列を渡しても、何かが私のJqueryコードで間違っていなければなりません。チェックボックスはチェックされません。私は何が欠けていますか? – Patriotec

+0

@ user1252552私がコメントした初期の間違いに気づいた後、私はコードの残りの部分を見ていませんでしたが、今はそうしています。私の答えを編集して、コードの他の問題の説明を追加しました。 –

+0

私たちはそこに着いています。新しいJqueryコードは、今チェックされているすべてのチェックボックスをマークしています。チェックボックスをクラスや値でターゲティングできますか、それとも不要なのですか? $( "。category.value(item)"のようなもの)。prop( "checked"、true); – Patriotec

0

ところで、意味的には、あなたはを使用する必要があります。同じことを行うと同時に、コードの可読性を高めることができます。

関連する問題