Events 手动更改后Dojo Textarea触发onChange
现有Dojo 1.10页面具有以下HTML文本区域(我无法更改源代码):Events 手动更改后Dojo Textarea触发onChange,events,dojo,textarea,Events,Dojo,Textarea,现有Dojo 1.10页面具有以下HTML文本区域(我无法更改源代码): 非常感谢您提供的任何帮助获取您的小部件并使用此选项。设置('value',value)使用change事件传递的值更新您的小部件 示例(请打开控制台): 在代码中,应该添加this.set('value',value)如果change事件不能按预期的方式用于textarea元素,则可能需要添加数据dojo props=“intermediateChanges:true”到文本区尝试了onkeyup和onblur事
非常感谢您提供的任何帮助获取您的小部件并使用
此选项。设置('value',value)
使用change
事件传递的值更新您的小部件
示例(请打开控制台):
在代码中,应该添加
this.set('value',value)在onChange
回调中的code>如果change
事件不能按预期的方式用于textarea
元素,则可能需要添加数据dojo props=“intermediateChanges:true”
到文本区
尝试了onkeyup
和onblur
事件,而不是onchange
欢迎!请发布一个JSFIDLE,以便我们能更好地回答。谢谢我尝试了onkeyup,但行为是一样的。与我刚刚发布的jsFIddle一样,只有手动修改textarea时才会触发该事件。谢谢,但我找不到如何将您的代码应用到我刚刚发布的jsFIddle示例。我在你的中看到,你正在创建一个新的文本区域,但我需要检索一个现有的文本区域。
<textarea tabindex="40" data-qbo-bind="value: payeeMessage" class="customerMessage" data-dojo-attach-point="_gridTabTarget" maxlength="1000"></textarea>
dojo.query(".customerMessage").connect("onchange", function() { alert("Changed!"); });
var widget_node = dojo.query(".customerMessage")[0];
widget_node.innerHTML="123123";
widget_node.onchange();
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>