【发布时间】:2016-04-04 19:53:30
【问题描述】:
我的表格带有复选框列表。如果复选框被选中,则值设置为 0,如果未选中,则值为 -1。我当前的代码仅在选中复选框时才提交复选框。每次点击保存按钮时,我都想提交表单中的所有复选框。有什么办法可以做到吗?这是我的代码:
HTML:
<input type="checkbox" name="user" value="~(user_ID)" class="chkBlock" />
jQuery:
//This code switch value based on if check box is checked or not
$j('.chkBlock').click(function(){
$j(this).val(this.checked ? 0:-1);
});
并且此代码根据 DB 中的值设置复选框状态:
$j( document ).ready(function() {
$j('input.chkBlock[value="0"]').prop("checked", true);
$j('input.chkBlock[value="-1"]').prop("checked", false);
$j('input.chkBlock[value=""]').prop("checked", false);
});
我当前的代码仅在检查后才提交值。
【问题讨论】:
-
这就是复选框的工作方式。如果仅在检查时给出一个值。如果您不使用 JavaScript,也会发生这种情况。所以实际上你甚至不需要检查 0 或 -1。只要值的存在就会告诉你它是否被选中。接受这种行为,而不是试图解决它。
-
那么,如果我在未选中复选框时必须设置不同的值,我该如何避免解决?如果我不能提交未选中的复选框,我将如何将该值保存在数据库中?您还有其他推荐的方法吗?
-
在服务器上检查该值是否存在。例如,如果它是 PHP,请执行以下操作:
$userChecked = isset($_GET['user']);。在这一行之后,$userChecked是一个布尔值,表示复选框user是否被选中。 -
我同意 showdev 它是重复的,但我不喜欢添加隐藏字段和一堆 JavaScript 的最常见建议解决方案。这样做有很多工作量和潜在风险,而且没有必要。
标签: javascript jquery html forms checkbox