5

我是 jquery 的新手,这很有趣,但是我遇到了一个小问题,我正在使用这样的 foreach 循环从数据库中填充多个复选框,

<? foreach($cities as $city) { ?>
    <input type="checkbox" name="city[]" value="<?=$city->id?>" id="city[]" />
<? } ?>

我想限制用户检查至少一个复选框,我知道如何只用一个复选框来执行此操作,但是对 jquery 中的这种数组感到困惑,任何帮助将不胜感激!提前谢谢了!

4

5 回答 5

17

要查找检查了多少个复选框,您可以使用以下内容:

var checkedNum = $('input[name="city[]"]:checked').length;
if (!checkedNum) {
    // User didn't check any checkboxes
}

由于您name为所有复选框(来自您的 PHP 循环)提供相同的属性,因此您可以使用选择器input[name="city[]"]来定位并找到所有复选框。但是要找出具体检查了多少,您可以添加:checked选择器。另一种方法是使用$('input[name="city[]"]').filter(":checked").

最后,只有在为 0 时才会!checkedNum通过,因为 0 是错误的。任何其他数字都是真实的,并且不会满足条件。checkedNum!checkedNum


参考:

于 2013-04-23T05:47:49.757 回答
2

如果你想至少选中一个复选框,你可以使用这个

var somethingChecked = false;
$("input[type=checkbox]").each(function() {
  if(this).is(':checked')) {
    somethingChecked = true;
  }
});
if(!somethingChecked) {
  alert("You haven't checked anything yet");
}

这样做是将变量初始化为 false。然后脚本循环遍历所有复选框类型的输入。如果该项目被选中,则将该变量设置为 true。最后,检查变量是否仍然为假。如果是,则显示错误。

于 2013-04-23T05:45:23.380 回答
1

这段代码对我很有效,在这里我将数组转换为字符串~

    <input type="checkbox" value="created" name="today_check"><strong>Created</strong>
    <input type="checkbox" value="modified" name="today_check><strong>Modified</strong>
 <a class="get_tody_btn">Submit</a>

<script type="text/javascript">
    $('.get_tody_btn').click(function(){
        var vals = "";
        $.each($("input[name='today_check']:checked"), function(){  
            vals += "~"+$(this).val();  
        });
        if (vals){
            vals = vals.substring(1);
        }else{
            alert('Please choose atleast one value.');
        }


    });
</script>
于 2017-09-29T04:46:16.253 回答
0

假设您拥有#my_form表单的 ID,您可以这样做

$("#my_form input[type=checkbox]:checked"). // ... do something

使用选中的复选框选择并执行某些操作。你也可以做

$("#my_form input[type=checkbox]").each(function(idx, elem) {
   var is_checked = $(this).prop("checked");
   // Do something with is_checked
});

遍历所有复选框并检查它们是否被选中。

于 2013-04-23T05:44:19.137 回答
0

首先所有id的复选框应该是唯一的。

这样做

<? 
$checkBoxCount = 0;
foreach($cities as $city) { ?>
    <input type="checkbox" name="city[]" value="<?=$city->id?>" id="chkbox-<?=$checkBoxCount?>" />
<? } ?>

现在在 jQuery 中像这样检查以检查所有复选框。

var checkCount = $("input[name='city[]']:checked").length;

if(checkCount == 0)
{
   alert("Atleast one checkbox should be checked.");
}
于 2013-04-23T05:49:03.707 回答