可能重复:
检查复选框是否使用 jQuery
我对类型复选框的输入如何工作感到有些困惑。
如果我在一个复选框上设置一个值,比如 1,我会看到无论是否选中该复选框,提交表单时我得到的值都是 1。
<input type="checkbox" value="1">
那么,查看复选框是否被选中的正确方法是使用checked
from jQuery? 或者如何正确完成?
可能重复:
检查复选框是否使用 jQuery
我对类型复选框的输入如何工作感到有些困惑。
如果我在一个复选框上设置一个值,比如 1,我会看到无论是否选中该复选框,提交表单时我得到的值都是 1。
<input type="checkbox" value="1">
那么,查看复选框是否被选中的正确方法是使用checked
from jQuery? 或者如何正确完成?
如果未选中复选框值,则不应提交它们。
如果您想使用 jQuery 进行检查,我将始终使用:
var isChecked = $('#checkbox').prop('checked');
或者
var isChecked = $('#checkbox').is(':checked');
使用 JavaScript,您必须了解attributes和properties之间的区别。checked
既是属性又是属性。但是,checked 的属性并不总是在复选框的checked
属性更改时更新(在某些浏览器中是这样)。将属性视为由 DOM 解析的 HTML 标记中的值。该checked
属性是 DOM 中复选框元素的实际成员,它始终根据 UI 中的复选框是选中还是未选中而变化。
如果你想尝试一个不需要 JavaScript 的万无一失的方法,你可以尝试“MVC”的方式,通过呈现一个隐藏的输入和一个具有相同名称的复选框,每个都有适当的“检查”状态值:
<input type="hidden" name="mybox" value="false" />
<input type="checkbox" name="mybox" value="true" />
提交表单时,如果在请求中找不到mybox
值为“true”的值,则未选中该复选框。更多关于这里。
为了检查复选框是否被实际选中,您必须使用
'boxname.checked==""
因为即使未选中该框,该值也将始终存在。
check
是checkbox
标签的属性,所以你必须检查它是否被设置,没有其他值。
$('input[type=checkbox]').is(':checked')
true
如果选中,则返回,否则返回false
。
在回答您对该问题的评论时,当您需要检查状态时,该值并没有什么好处。