现有的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();
非常感谢任何帮助
答案 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
。