我有一个
<input id="myTextBox" data-dojo-type="dijit/form/TextBox" data-dojo-props="value: at(model, myValue)" />
当我尝试将值从
model.myValue
复制到另一个input
时(例如window.setInterval(
function() { document.getElementById("theOtherInput").value = model.myValue; }, 1000);
我注意到,在
myTextBox
的model.myValue
失去焦点之前,<input>
的值不会与myTextBox
同步。即-除非我离开输入字段theOtherInput
,否则myTextBox
将不会更新。如何在每次击键时强制dojo将输入与绑定变量进行同步?我认为这应该是默认行为,或者至少应该毫不费力就可以实现,但是我找不到合适的属性来做到这一点。有任何想法吗?
对我来说,主要问题是,当我按Enter键提交表单时,
model.myValue
仍具有输入myTextBox
成为焦点之前的值。 (而且我不想使用setInterval
进行黑客攻击-我只想让dojo进行将输入与模型同步的工作) 最佳答案
最接近的方法是将intermediateChanges
属性设置为true
并附加一个onChange
事件。像这样:
<input id="myTextBox" data-dojo-type="dijit/form/TextBox"
data-dojo-props="intermediateChanges: true"
data-dojo-attach-event="onChange: _myOnChange"
data-dojo-props="value: at(model, myValue)" />
现在,在小部件内部,
_myOnChange
函数将在每次有价值的击键或更改内容时运行。_myOnChange: function(newValue){
console.log(newValue);
document.getElementById("theOtherInput").value = newValue;
}