javascript - 为 dijit/form/TextBox 正确设置值时如何避免触发事件 'change'?

标签 javascript dojo dom-events

我需要更改小部件dijit/form/TextBox的属性value,但我注意到每当我使用widget.set('value ','some value'); 事件 change 在小部件上触发。

我需要以编程方式正确更改它,但不触发 change 事件。知道如何实现它吗?

https://jsfiddle.net/s5620bwd/6/

require(['dijit/form/TextBox', 'dojo/on'], function(TextBox, on) {
  var textBox = new TextBox({
    intermediateChanges: true
  }, 'button');
  on(textBox, 'change', function(value) {
    this.set('value', value);
    console.log(this.get('value')); // widget updated
  });

  // change value programmatically
  textBox.set('value', 'value change programmatically');
});

最佳答案

TextBox 小部件有一个名为 textbox 的属性,它对应于小部件中包含的输入元素。如果您在元素上设置值,它将不会触发任何事件监听器。

require(['dijit/form/TextBox', 'dojo/on'], function(TextBox, on) {
  var textBox = new TextBox({
    intermediateChanges: true
  }, 'button');
  textBox.on('change', function(value) {
    // this event handler will not fire
    this.set('value', value);
    console.log(this.get('value'));
  });

  textBox.textbox.value = 'my new value';
});

此外,要将事件处理程序附加到小部件,您应该使用小部件自己的 on 方法来附加处理程序。

关于javascript - 为 dijit/form/TextBox 正确设置值时如何避免触发事件 'change'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35796983/

相关文章:

javascript - 如何在客户端用 JavaScript 弹出文本文件

JavaScript:如何防止 "undefined"定义困惑?

javascript - 浏览器问题: Charts are not rendered on IE8

javascript - 在对数组中找到最接近的数字对的最快方法是什么

angularjs - 使用 ArcGIS JavaScript API 时模拟 HTTP 调用

javascript - Dojo 构建系统 - 使用异步插件和 google map api

javascript - 未捕获的类型错误 : Object [object Object] has no method 'jcarousel' in Javascript

javascript - 检测 iframe 何时有响应?

javascript - js函数转jquery

javascript - 日期选择器不允许今天的日期作为接受