1

Jquery を使用して、一意に名前が付けられたすべてのチェックボックス グループから少なくとも 1 つのオプションがチェックされていることを確認するにはどうすればよいですか? これらのチェックボックスは動的に生成され、一意に名前が付けられたチェックボックスの総数は異なります...

<input type="checkbox" class="mcqcb" name="ans_4[]" value="A">
<input type="checkbox" class="mcqcb" name="ans_4[]" value="B">
<input type="checkbox" class="mcqcb" name="ans_4[]" value="C">
<input type="checkbox" class="mcqcb" name="ans_4[]" value="D">

<input type="checkbox" class="mcqcb" name="ans_5[]" value="A">
<input type="checkbox" class="mcqcb" name="ans_5[]" value="B">
<input type="checkbox" class="mcqcb" name="ans_5[]" value="C">
<input type="checkbox" class="mcqcb" name="ans_5[]" value="D">

<input type="checkbox" class="mcqcb" name="ans_17[]" value="A">
<input type="checkbox" class="mcqcb" name="ans_17[]" value="B">
<input type="checkbox" class="mcqcb" name="ans_17[]" value="C">
<input type="checkbox" class="mcqcb" name="ans_17[]" value="D">

これまでのところ、私はこれを試しました:

$('input:checkbox[class=mcqcb][name*="ans_*"]').not(':checked').length
4

3 に答える 3

0

<input type="checkbox" class="mcqcb" name="ans_4[]" value="A" checked>

タグの最後に「チェック」を入れてください!!

于 2013-01-26T14:00:19.863 に答える
0

あなたのことを正しく理解しているかどうかわかりません。ただし、名前属性が ans で始まるチェックボックスのサイズをテストする場合は、セレクターを次のように変更する必要があります。

$('input:checkbox[name*="ans_"]:checked');

これらすべてのグループの少なくとも 1 つがチェックされているかどうかをテストしたい場合は、問題ありません。ただし、各グループの少なくとも 1 つがチェックされているかどうかをテストしたい場合は、ループ/フィルターする必要があります。

function checkGroup() {
    var finalResult = true; 
        nameArr=[], 
        checkboxGroups = $('input:checkbox[name*="ans_"]');
    checkboxGroups.each(function(){
        var name = $(this).attr("name");
        if($.inArray(name, nameArr) == -1)
            nameArr.push(name);
    });
    // Go through each name attribue and make sure at least one is checked.
    $.each(nameArr, function(index, value){
        if($('[name="' + value + '"]:checked').length === 0){
           finalResult = false; 
        }
    });
    return  finalResult;   
}
于 2013-01-26T14:19:18.447 に答える
0

jQuery でこれを行う唯一の方法は、配列を使用してチェックボックスのグループ化データを格納することです。

JS:

var detectionArry={};
$('.mcqcb').each(function(){
    if (!detectionArry[$(this).attr("name")]){
    detectionArry[$(this).attr("name")]=$(this).prop("checked");
    }
});
for (var i in detectionArry){
    if (!detectionArry[i]){
     alert(i+" is not completed!");   
    }
}

デモ| ソース

編集:チェックボックス内に保持するには、セレクター( )を提供したセレクター
に置き換えるだけです:$('.mcqcb')$('input:checkbox[class=mcqcb]')

デモ| ソース

于 2013-01-26T14:16:10.483 に答える