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

标签 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而存在,所以我无法摆脱它。如何检查复选框是否已选中,而无需单击复选框本身?谢谢

最佳答案

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

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

但是,如果您不仅想测试其状态,还想执行 handleClick 函数,请注意该函数需要 DOM 元素,而不是 jQuery 对象,如下所示论证。
如果将 jQuery 对象传递给函数,则 cb.checked 将始终计算为 false,因为 jQuery 对象没有 checked属性(只有 DOM 元素才有)。

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

handleClick(cb.get(0));

从 jQuery 对象中提取 DOM 元素。

关于javascript - 查看默认情况下是否选中复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11475211/

相关文章:

javascript - @PublishEvent、ajax 和传递数据

javascript - 如何使用 grunt-contrib-coffee 避免多个辅助实现,如 __indexOf()

javascript - Bootstrap 和 Select2 表单验证

html - 仅当元素没有 href 时,更改元素的 "current"类才有效

javascript - 通过 jQuery 将 HTML 加载到 DIV 时出现错误 404

javascript - 何时使用 NodeIterator

javascript - 脚本未对齐表

Javascript/JQUERY - 确认 - true/false 响应

javascript - 尝试在鼠标悬停事件上播放 HTML5 音频

javascript - 使用 JS 设置 HTML 和 BODY CSS