0

SQL2008Serverと最新の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);
    }
});
4

2 に答える 2

3

文字列である単一の要素を持つ配列を渡しているのであって、文字列である1,7,203つの要素を持つ配列ではないので、なぜそれが機能することを期待しているのかわかりません。入力が実際に文字列である場合は、コンマで分割して、数値を文字列として持つ配列を取得できます。1720

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

myArray次に、$.each()関数呼び出しに渡します。

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

$.each(myArray, function(index, item){
    $('.category').each(function(){
        if(this.value === item) {
            this.checked = true;
        }
    });
});
于 2012-04-19T11:32:12.397 に答える
0

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

于 2012-04-19T11:38:52.160 に答える