未触发CheckboxInputElement.onChange事件

时间:2014-07-25 22:16:05

标签: javascript dart

我的代码很简单但行print("checky changed")未运行。它应该运行,因为在注册onChange侦听器后,应该在复选框的选中状态更改时打印消息,我将复选框的选中状态更改两次:首先直接更改{{1三秒后执行,每次都有不同的值。

如果我手动选中或取消选中该复选框,则会打印该信息。

我真的需要帮助解决这个问题:为什么在Timer的值以编程方式更改时,永远不会打印消息"checky changed"

我有这个HTML代码:

checky.checked

和这个Dart代码:

<!DOCTYPE html>

<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Test</title>

    <script async type="application/dart" src="script.dart"></script>
    <script async src="packages/browser/dart.js"></script>
  </head>
  <body>
    <h1>Test</h1>

    <input type="checkbox" id="checky">
  </body>
</html>

非常感谢您提供任何帮助!

2 个答案:

答案 0 :(得分:2)

表单选项onchange不会以编程方式触发。 更改checked属性后,需要执行on change方法。 SEB

答案 1 :(得分:2)

您可以手动发送onChange事件:

import 'dart:html';
import 'dart:async';

void main() {
  CheckboxInputElement checky = querySelector('#checky');
  checky
      ..checked = true
      ..onChange.listen((_) {
        print("checky changed");
      });
  new Timer(const Duration(seconds: 1), () {
    checky.dispatchEvent(new Event("change"));
    checky.checked = !checky.checked;
  });
}