知道是不是选中复选框的正确方法[重复]

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,您必须了解 attributesproperties 之间的区别。 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】:

checkcheckbox标签的属性,所以你必须检查它是否被设置,没有其他值。

【讨论】:

【参考方案4】:

为了检查复选框是否真的被选中,你必须使用

'boxname.checked=="" 

因为即使该框未选中,该值也将始终存在。

【讨论】:

以上是关于知道是不是选中复选框的正确方法[重复]的主要内容,如果未能解决你的问题,请参考以下文章

jQuery复选框选中/取消选中[重复]

引导检查是不是选中复选框[重复]

如何知道是不是使用java在selenium中选中了一个复选框[重复]

如何检查是不是选中了复选框[重复]

检查提交时是不是选中了所有复选框[重复]

如何知道是不是选中了表单中的多个复选框并将值插入数据库表c#