0

同じグループ内の別のテキスト ボックスがチェックされているかどうかを検出するために jquery を使用しようとしています。以下のコードは、詳細ボックスがチェックされているときにグループ名を取得し、それを使用して付随する基本ボックスがチェックされているかどうかを確認する方法を示しています。問題は、基本チェックボックスの状態に関係なく、「basicTrue」が常に「未定義」に割り当てられることです。

<div id="boxes">
<input style="text-align:center;" type="checkbox" name="group1" value="Basic">
<input style="text-align:center;" type="checkbox" name="group1" value="Advanced">
<input style="text-align:center;" type="checkbox" name="group2" value="Basic">
<input style="text-align:center;" type="checkbox" name="group2" value="Advanced">
</div>

$("#boxes").contents().find(":checkbox").bind('change', function(){        
val = this.checked;
var $obj = $(this);    
if($obj.val()=="Advanced"){
var group = $obj.attr("name");
var basicTrue = $('input[name=group][value="Basic"]').prop("checked");
if(basicTrue)
{
    //Do stuff
}
else
{
    $obj.attr('checked', false);
}
}

このコードは、このようにフォーマットされたコードが機能することを証明するために使用した概念実証であり、「group1」の「基本」チェックボックスのステータスを返します。

var basicTrue = $('input[name="group1"][value="Basic"]').prop("checked");

変数「グループ」に正しい名前が付けられていることは知っています。たとえば、group1です。コードでこの変数を使用してもうまくいかない理由はありますか?

4

1 に答える 1

1

これらは変数であり、次のようにセレクター内の文字列に集約する必要があります。

$('input[name="' + group + '"][value="Basic"]').prop("checked");

簡易版:

$("#boxes input[type='checkbox']").on('change', function(){        
   var bT = $('input[name="'+ this.name +'"][value="Basic"]').prop("checked");

    if( this.value == "Advanced" && bT) {
        //Do stuff
    } else {
        $(this).prop('checked', false);
    }
});
于 2013-02-14T03:38:36.313 に答える