【问题标题】:Check if a check box is checked or not (js/jquery)检查是否选中了复选框(js/jquery)
【发布时间】:2012-04-20 21:03:10
【问题描述】:

我想检查是否使用 JavaScript/jQuery 选中了某个复选框。

这是我试过的代码:

var a;
    if ($("#add_desc").checked == 1){
        a = "true";
    }else{
        a= "false";
    }

我也试过了:

var a;
    if ($("#add_desc").checked){
        a= "true";
    }else{
        a= "false";
    }

一旦我警告变量a,它总是返回false。

知道为什么它对我不起作用吗?我做错了吗?

谢谢!

【问题讨论】:

  • .checked 之前添加[0] 并使用第二次尝试
  • 作为解释:$('#add_desc') 返回一个包含元素的 jQuery 对象,而不是元素本身,因此没有 checked 属性。添加 [0] 会返回 jQuery 对象(您的实际复选框)中包含的第一个元素,该元素确实具有选中的属性。
  • 您还可以使用 jQuery 1.6 的 .prop() 访问这些属性。 api.jquery.com/prop
  • @CameronSpear 你可以,但老实说,整个示例都很简单,根本不需要使用 jQuery。
  • @AnthonyGrist 我注意到您也需要索引 jquery 的 id 选择器。为什么jQuery manual 中没有这样说?他们这样做就像 OP 正在做的那样..

标签: javascript jquery html checkbox


【解决方案1】:

要在复选框输入中获取checked 属性的值,请使用.prop() 方法,或直接从DOM 元素中获取值。 [0] 返回第一个选定的 DOM 元素。

var a;
if ($("#add_desc")[0].checked){
    a= "true";
}else{
    a= "false";
}

var a;
if ($("#add_desc").prop("checked")){
    a= "true";
}else{
    a= "false";
}

编辑
对于早于 1.6 的 jQuery 版本,.prop 不存在,使用 .attr 作为直接替换。

【讨论】:

    【解决方案2】:

    简单,

    var a = $('#element:checkbox').is(':checked');
    

    【讨论】:

    • 这将使变量成为布尔值,而在他的示例中,他正在分配字符串值...
    • 是的。但是如果需要,做一个toString() 有多难?
    【解决方案3】:

    “jQuery 方式”是使用.is(":checked"):

    var a;
    if ($("#add_desc").is(":checked")){ // box is checked
        a = "true";
    } else{ // box is not checked
        a= "false";
    }
    

    我在我的网络应用程序中经常使用它,它运行良好。

    来自jQuery .is documentation page

    与其他过滤方法不同,.is() 不会创建新的 jQuery 目的。相反,它允许您测试 jQuery 对象的内容 未经修改。这在回调中通常很有用,例如 事件处理程序。

    【讨论】:

      【解决方案4】:

      javascript 中的ternary 运算符结合jQuery .is() 是最短的解决方案。

      var a = ($("#add_desc").is(":checked")) ? "true" : "false";
      

      【讨论】:

        【解决方案5】:

        尝试:

        if ($('#add_desc').is(':checked')) {
          a = "true";
        } else {
          b = "false";
        }
        

        您也可能不想使用字符串,即使用truefalse 而不是"true""false"

        【讨论】:

          【解决方案6】:

          试试

          $get("#add_desc").checked == true
          

          还有

          $("#add_desc").prop("checked", true);
          $("#add_desc").prop("checked", false);
          

          【讨论】:

          • 请注意 .prop() 在 jQuery 1.6 之前不存在。对任何早期版本的 jQuery 使用 .attr()
          猜你喜欢
          • 2012-07-13
          • 2012-06-23
          • 1970-01-01
          • 1970-01-01
          • 2019-04-11
          • 2011-01-13
          • 2015-07-05
          相关资源
          最近更新 更多