查看默认情况下是否选中了复选框

时间:2012-07-13 17:13:30

标签: javascript jquery

我有一个javascript函数,每次点击一个复选框时都会设置一个变量:

      function handleClick(cb) {
         alert('entered function');
          setTimeout(function () {

        if (cb.checked ) {
               $("#IsChecked").val('true');
           }
            else
               $("#IsChecked").val('false');

        alert('now my value is: '+ $("#IsChecked").val());
       }, 0);
   }

继承我的复选框:

  <input id="MyCheckBox" type="checkbox" value="true" onclick="handleClick(this);" 
  name="MyCheckBox" checked="checked">

每次选中复选框时,这都很有效。但是现在我需要知道当用户点击按钮并且之前从未触过复选框时是否选中了复选框。所以我这样做:

   $(document).ready(function () {
    $("#IsChecked").val('default');

    $('#btnCheck').click(function (e) {
        var isComplete = $("#IsChecked").val();
        if (isComplete == 'default') {
            var cb = $('#MyCheckBox');
            handleClick(cb);
         alert('after handleClick ischecked is: ' + $("#IsChecked").val());
         }
     });

});

当我点击我的按钮并默认选中该复选框时,我会按以下顺序收到这些警告:

 entered function
 after handleClick ischecked is: default
 now my value is: false

如果我选中复选框以切换它,我会按预期收到这些提醒:

 entered function
 now my value is: false

在我的handleClick事件中,setTimeout因为IE而存在,所以我无法摆脱它。如何查看复选框是否已选中而无需单击复选框本身?感谢

3 个答案:

答案 0 :(得分:2)

  

如何检查是否选中了复选框而无需单击复选框本身?

$('#MyCheckBox').prop('checked')会随时告诉您是否选中了复选框。

但是,如果您不仅要测试其状态,还要执行handleClick函数,请注意该函数需要 DOM元素,而不是jQuery对象作为参数。<登记/> 如果将jQuery对象传递给函数,那么cb.checked将始终求值为false,因为jQuery对象没有checked属性(只有DOM元素具有)。

您必须将函数调用更改为:

handleClick(cb.get(0));

从jQuery对象中提取DOM元素。

答案 1 :(得分:1)

如果要检查是否通过按钮单击事件选中了复选框。

$("#IsChecked").is(':checked'); //returns boolean

答案 2 :(得分:1)

 How can i check to see if a checkbox is checked without having to click 

您可以使用val()方法

查看是否在javascript中使用click事件选中了复选框
$("#MyCheckBox").is(':checked')​​​​​​