多个具有相同名称的复选框。我怎么知道哪些是未选中的? [复制]
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) 方法,您将在发送到服务器之前获得所有未选中的复选框。将这些一一累积并发送到您的服务器。以上是关于多个具有相同名称的复选框。我怎么知道哪些是未选中的? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
在 Rails 中,如何处理多个选中的复选框,只在 , 或?