【问题标题】: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 来执行此操作,或者是否可以使用该值来执行此操作。

标签: jquery html checkbox checked


【解决方案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=="" 
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-09-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-30
        • 2016-10-31
        相关资源
        最近更新 更多