Javascript 在复选框循环组中至少选择1个复选框

Javascript 在复选框循环组中至少选择1个复选框,javascript,jquery,checkbox,Javascript,Jquery,Checkbox,我试图让这个东西工作一段时间,但我想我需要从某个地方调整代码。我想,这里有人可以更好地指导我,而不是把我的头撞到我的编码屏幕上:) 以下是实际过程: <input type="hidden" name='oneSelectionChk_1'> <input type="checkbox" name='awp_group_1' id='id1'> <input type="checkbox" name='awp_group_1' id='id2'> <in

我试图让这个东西工作一段时间,但我想我需要从某个地方调整代码。我想,这里有人可以更好地指导我,而不是把我的头撞到我的编码屏幕上:)

以下是实际过程:

<input type="hidden" name='oneSelectionChk_1'>
<input type="checkbox" name='awp_group_1' id='id1'>
<input type="checkbox" name='awp_group_1' id='id2'>
<input type="checkbox" name='awp_group_1' id='id3'>
<input type="checkbox" name='awp_group_1' id='id4'>


<input type="hidden" name='oneSelectionChk_2'>
<input type="checkbox" name='awp_group_2' id='id5'>
<input type="checkbox" name='awp_group_2' id='id6'>
<input type="checkbox" name='awp_group_2' id='id7'>
<input type="checkbox" name='awp_group_2' id='id8'>

<input type="hidden" name='oneSelectionChk_3'>
<input type="checkbox" name='awp_group_3' id='id9'>
<input type="checkbox" name='awp_group_3' id='id10'>
<input type="checkbox" name='awp_group_3' id='id11'>
<input type="checkbox" name='awp_group_3' id='id12'>
这段代码总是给我0长度的复选框,我不确定是否需要为每个复选框再次循环,或者这可能有效


任何快速的帮助都应该感谢

标记中没有具有
oneSelectionChk
属性的
name
元素,隐藏输入具有以
oneSelectionChk
开头的
name
属性,您必须使用以
选择器开头的
属性

如果元素是同级元素,则可以使用
.nextUntil()
方法选择目标元素:

var $hidden = $('input[type=hidden]').filter('[name^=oneSelectionChk]');

$hidden.each(function(){
   var $chekboxes = $(this).nextUntil('input[type=hidden]'),
       $checked = $checkboxes.filter(':checked'),
       $unchecked = $chekboxes.not($checked); 
});
使用
name
属性:

var $hidden = $('input[type=hidden]').filter('[name^=oneSelectionChk]'),
    $checkboxes = $('input[type=checkbox]');

$hidden.each(function() {
   var n = this.name.split('_')[1];
   var $grp = $checkboxes.filter('[name="awp_group_'+ n +'"]');
   // ..
});
试一试


演示:

您到底想做什么?感谢你们两位的贡献,我尝试了后一种方法,并了解了我是如何转储的,因为我正在通过名称oneSelectionChk访问,其中每个组的唯一id都不同,我现在将名称更改为相同的名称,一切都像一个符咒一样工作。谢谢你节省我的时间:)
var $hidden = $('input[type=hidden]').filter('[name^=oneSelectionChk]'),
    $checkboxes = $('input[type=checkbox]');

$hidden.each(function() {
   var n = this.name.split('_')[1];
   var $grp = $checkboxes.filter('[name="awp_group_'+ n +'"]');
   // ..
});
var chkFields = $('input[name^="oneSelectionChk"]');
$.each(chkFields, function (i, field) {
    var groupID = field.name.replace('oneSelectionChk_', '')
    var chkGroupBoxes = $('input[name="awp_group_' + groupID + '"]');

    if (chkGroupBoxes.filter(':checked').length == 0) {
        alert('please select at least one checkbox under: ' + field.name)
    }
});