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

Posted

技术标签:

【中文标题】多个具有相同名称的复选框。我怎么知道哪些是未选中的? [复制]【英文标题】:Multiple checkboxes with same name. How do I know which ones are unchecked? [duplicate] 【发布时间】:2017-04-06 20:50:48 【问题描述】:

所以我刚刚遇到了一个奇怪的情况,复选框只是让我感到压力。我正在尝试构建一个看起来像这样的“里程碑”功能:

[浏览状态][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】:

试试这个,有多种方法可以做到这一点。在复选框的每个状态更改或在某个事件上获取一次。

    对于每个复选框单击。

    $(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
              
            );
        );
    );
    

    或者在提交到服务器之前,

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

【讨论】:

我不确定这些将如何帮助我获得后端复选框状态的完整列表。你能解释一下你会在//your logic部分放什么吗?我可以想象的是在该部分中将相应复选框的值设置为“1”或“0”,但这根本没有帮助,因为在后端它仍然只有“选中”框。 通过使用 (2) 方法,您将在发送到服务器之前获得所有未选中的复选框。将这些一一累积并发送到您的服务器。

以上是关于多个具有相同名称的复选框。我怎么知道哪些是未选中的? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

javascript提交未选中复选框的默认值

在 Rails 中,如何处理多个选中的复选框,只在 , 或?

复选框的属性[重复]

急求高手解答!!!!!!!C#中checkbox判断哪些被选中并执行后续操作~

vb6.0动态生成复选框并获取选中的值

取消选中 jquery 中具有相同类名的复选框不起作用