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

标签 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'>
<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'>

我在 jQuery 中使用的是:

var chkFields = $("input[name='oneSelectionChk']");
$.each(chkFields, function(i, field){
var groupID = field.id.split('_'); // Getting the ID of the group
var  chkGroupBoxes = $('input[name="awp_group_"'+groupID[1]);
   if(field.value==1)
   {
            //$.each(chkGroupBoxes, function(j, thisChkBox){
               //alert(thisChkBox.value + " #"+j);
               alert( $('input[name="awp_group_"'+groupID[1]).filter(':checked').length);
                 if($('input[name="awp_group_"'+groupID[1]+':checked').length > 0 )
                   {
                            //$.scrollTo( '#awp_container', 1200 );
                           alert($('input[name="awp_group_"'+groupID[1]+':checked').length+" Selected ");
                           //alert( "Class AlertMsgText Should be removed Now");
                           $("#selectInstruction_"+groupID[1]).removeClass("AlertMsgText");
                         //return
                   }
                   else
                   {
                      alert($('input[name="awp_group_"'+groupID[1]+':checked').length+" Still not selected ");
                     //alert("Please select atleat 1 from Option #"+groupID[1]);
                     $("#selectInstruction_"+groupID[1]).addClass("AlertMsgText");
                     $.scrollTo( '#awp_container', 1200 );
                    //return;
                 }
          //});
      }
    });

这段代码总是给我 0 个长度的复选框,我不确定我是否需要为每个复选框再次循环或者这是否可行?

我们将不胜感激任何快速帮助!

最佳答案

尝试

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)
    }
});

演示:Fiddle

关于javascript - 在复选框组循环中选择至少 1 个复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18492823/

相关文章:

Javascript 闭包——变量与参数

jquery - 使用 jquery 创建 div 元素并添加内部 html

jquery 动态添加的复选框不适用于 Change() 函数

javascript - 性能问题 KineticJS

javascript - 如何在 JavaScript 中创建日期过滤器?

javascript - 为什么jQuery或诸如getElementById之类的DOM方法找不到元素?

jquery - 为什么 jQuery 给我一个错误 'has no method sortable' ?

javascript - jQuery 表单接受复选框,禁用提交按钮

jquery - 使用 jQuery 动态选中和取消选中复选框 : bug?

javascript - 追加后事件监听器不起作用