手动更改后,Dojo Textarea触发onChange

时间:2016-03-02 14:26:27

标签: events dojo textarea

现有的Dojo 1.10页面包含以下HTML textarea(我无法更改源代码):

<textarea tabindex="40" data-qbo-bind="value: payeeMessage" class="customerMessage" data-dojo-attach-point="_gridTabTarget" maxlength="1000"></textarea>

我一直在尝试创建一个javascript,它将更改textarea的内容,以便在提交表单时保存该值。我已经能够更改内容,但它永远不会被保存,因为不知何故,我需要在更改值后生成onChange触发事件。

我的代码看起来像这样但是,它不会触发事件:

dojo.query(".customerMessage").connect("onchange", function() { alert("Changed!"); });
var widget_node = dojo.query(".customerMessage")[0];
widget_node.innerHTML="123123";
widget_node.onchange();

非常感谢任何帮助

2 个答案:

答案 0 :(得分:0)

获取您的小部件并使用this.set('value', value)使用change事件传递的值更新您的小部件。

示例(请打开控制台):

https://jsfiddle.net/s5620bwd/3/

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
  });
});
<div id="button"></div>

在您的代码中,您应该在this.set('value', value);的callBack中添加onChange

答案 1 :(得分:0)

如果您遇到change事件无法正常用于textarea元素的问题,则可以将data-dojo-props="intermediateChanges: true"添加到textarea