多个具有相同名称的复选框。我怎么知道哪些是未选中的?

时间:2016-11-23 01:05:21

标签: javascript php jquery html checkbox

所以我刚遇到一个奇怪的情况,复选框只是在强调我。我正在尝试建立一个“里程碑”功能,如下所示:

  

[浏览状态] [1]   | [编辑状态] [2]    [1]:https://i.stack.imgur.com/f0XV4.png    [2]:https://i.stack.imgur.com/SLFQU.png


我在这里使用ms[]所以我可以使用PHP POST拉出后端的所有项目。

<input type="text" class="form-control" name="ms[]" value="<?=$value["content"]?>">

问题在于,当我使用$_POST['ms[]']获取这些复选框时,它实际上只给了我一个仅包含已检查项目的数组。然后我真的不知道哪些用户没有检查。

我在这里阅读了一些流行的解决方案,所有这些解决方案似乎都要求输入的名称属性不同。但由于“里程碑”是可删除的和可添加的,我不能给它一个唯一的名称。

我还提出了一些其他可能的解决方案,例如将所有这些复选框隐藏为文本框。每次用户选中或取消选中复选框时,相应的文本框都会设置为“1”或“0”。但这需要我改进整个事情。

我只是想知道是否有任何简单可靠的方法来获取复选框的完整列表,无论它们是否被选中?

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

试试这个,你可以通过各种方式做到这一点。在复选框的每个状态更改或在某个事件上获得一次。

  1. 对于每个复选框,请单击。

    $(document).ready(function(){
        $('input[type=checkbox]').each(function(){
            //register for each checbox a click event
            $(this).on('click', function(){
               //check if this checbox is checked or not
               if($(this).is(':checked') == false)
               {
                //your logic
              }
            });
        });
    });
    
  2. 或者在提交给服务器之前,

     $(document).ready(function(){
            $('input[type=checkbox]').each(function(){
                //check if this checbox is checked or not
                if($(this).is(':checked') == false)
                {
                  //your logic
                }
            });
        });