看是否复选框被默认

问题描述:

检查我有一个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浏览器,所以我不能摆脱它。如何检查复选框是否被选中而不必单击复选框本身?谢谢

+0

建议:使用带有复选框的更改事件。 – F0G 2012-07-13 17:17:37

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

你可以找出是否复选框是与单击事件的JavaScript检查使用VAL()方法

$("#MyCheckBox").is(':checked')​​​​​​ 
+0

这总是返回true – BoundForGlory 2012-07-13 17:23:55

+0

现在请尝试我已经更新了我的答案 – Adil 2012-07-13 17:26:14

+0

我不断收到非法字符。我这样做:var chk = $(“#MyCheckBox”)。is(':checked'); – BoundForGlory 2012-07-13 17:28:53

如果你想检查从按钮点击事件检查复选框。

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

如何检查,看是否有复选框没有选中必须单击复选框本身?

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

但是,如果你不仅要测试它的地位,同时也执行你​​功能,然后记下该函数需要DOM元素,而不是一个jQuery对象作为参数。
如果你传递一个jQuery对象到你的函数,那么cb.checked将总是计算为false,因为jQuery对象没有checked属性(只有DOM元素有)。

你必须给你的函数调用更改为:

handleClick(cb.get(0)); 

从jQuery对象中提取的DOM元素。

+0

我得到一个错误cb.get不是一个函数。我使用jQuery.1.4。1 – BoundForGlory 2012-07-13 17:31:09

+0

@ user1202717:它应该工作,它自1.0以来就是jQuery的一部分:http://api.jquery.com/get/。当然,如果'cb'不是一个jQuery对象。概念证明:http://jsfiddle.net/hhtuA/ – 2012-07-13 17:32:48

+0

谢谢。我今天:) – BoundForGlory 2012-07-13 17:39:03