【问题标题】:Monitoring the check state of a checkbox监控复选框的检查状态
【发布时间】:2011-03-29 04:06:42
【问题描述】:

自动检查复选框是否已(未)选中的最佳方法是什么。我知道 onclick 事件会捕获点击事件,但是如果另一个脚本更改了复选框 ala “检查所有按钮”的状态怎么办。

【问题讨论】:

    标签: javascript html checkbox monitoring


    【解决方案1】:

    您可以使用“更改”事件。该行为在 IE 中存在错误,因此您可能必须同时观察点击和更改 - http://www.quirksmode.org/dom/events/change.html。

    【讨论】:

    • 它在 IE 中不是“错误的”,它是根据 W3C HTML 4.01 规范实现的,该规范说,如果控件被修改,它应该在失去焦点时触发。不幸的是,这种行为令人困惑,因此大多数使用 click 事件并使用元素的 checked 属性。
    • change 事件不会检测到使用 [checkbox].checked = true/false 之类的程序更改
    • 我同意你的看法。如果它在所有浏览器中的行为都相同并检测到程序更改,我会使用 onchange 事件。
    【解决方案2】:

    您不能使用更改事件来监视复选框的程序更改(更改,不是源自单击)。所以你必须制作自己的显示器。一种方法是使用setInterval 进行定期检查。比如:setInterval(checkstate,2000);。请参阅此this jsfiddle 以查看实际示例。

    【讨论】:

    • 我认为这个选项会出现。我使用过 onchange ,但它在浏览器中似乎不可预测。我只是想避免使用 cpu 周期来合并复选框。
    【解决方案3】:

    【讨论】:

      【解决方案4】:

      您可以在 java 脚本中定义一个 全局 变量并将其状态更改为选中
      或在单击更改复选框状态和另一个脚本更改时取消选中
      复选框的状态

      【讨论】:

        【解决方案5】:

        其他脚本应在代码本身中启动复选框单击。即使从脚本启动,该事件也会冒泡。如果你有兴趣,这里是一个例子 --> http://jsfiddle.net/qSRzM/1/

        【讨论】:

          猜你喜欢
          • 2017-03-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-03-09
          • 1970-01-01
          • 1970-01-01
          • 2018-08-31
          • 2015-12-15
          相关资源
          最近更新 更多