知道是不是选中复选框的正确方法[重复]
Posted
技术标签:
【中文标题】知道是不是选中复选框的正确方法[重复]【英文标题】:Correct way of knowing if a checkbox is checked [duplicate]知道是否选中复选框的正确方法[重复] 【发布时间】:2012-10-23 01:11:40 【问题描述】:可能重复:Check if checkbox is checked with jQuery
我对类型复选框的输入如何工作感到有些困惑。
如果我在一个复选框上设置一个值,比如 1,我看到无论复选框是否被选中,提交表单时我得到的值都是 1。
<input type="checkbox" value="1">
那么,查看复选框是否被选中的正确方法是使用 jQuery 中的checked
?或者如何正确完成?
【问题讨论】:
不,我只是想知道我是否必须使用 jQuery 来执行此操作,或者是否可以使用该值来执行此操作。 【参考方案1】:如果未选中复选框值,则不应提交它们。
如果你想用 jQuery 检查,我会一直使用:
var isChecked = $('#checkbox').prop('checked');
或者
var isChecked = $('#checkbox').is(':checked');
使用 javascript,您必须了解 attributes 和 properties 之间的区别。 checked
既是属性又是属性。但是,当复选框的checked
property 更改时,检查的 属性 并不总是更新(在某些浏览器中是这样)。将属性视为由 DOM 解析的 html 标记中的值。 checked
property 是 DOM 中复选框 element 的实际成员,它总是根据 UI 中的复选框是选中还是未选中而变化。
如果您想尝试一种不需要 JavaScript 的万无一失的方法,您可以尝试“MVC”方式,通过呈现隐藏输入和具有相同名称的复选框,每个都具有适当的“已检查”状态值:
<input type="hidden" name="mybox" value="false" />
<input type="checkbox" name="mybox" value="true" />
当您提交表单时,如果您在请求中找不到值为“true”的mybox
值,则该复选框未被选中。更多关于 here.
【讨论】:
所以,不能用value属性来决定。勾选与否,其值相同。您始终必须检查是否已检查。对吗? @HommerSmith:不幸的是,value
属性在各种浏览器中的行为不同,无论表单提交是否包含该值是否被选中。我做了一个显示“MVC”方式的编辑——一种知道复选框是否真的被选中的万无一失的方法。【参考方案2】:
$('input[type=checkbox]').is(':checked')
如果选中则返回 true
,否则返回 false
。
在回答您对该问题的评论时,当您需要选中状态时,该值并没有什么好处。
【讨论】:
【参考方案3】:check
是checkbox
标签的属性,所以你必须检查它是否被设置,没有其他值。
【讨论】:
【参考方案4】:为了检查复选框是否真的被选中,你必须使用
'boxname.checked==""
因为即使该框未选中,该值也将始终存在。
【讨论】:
以上是关于知道是不是选中复选框的正确方法[重复]的主要内容,如果未能解决你的问题,请参考以下文章