代码之家  ›  专栏  ›  技术社区  ›  outofmind codeape

如何强制dijit/form/textbox立即更新绑定到它的变量-绑定无法按预期工作

  •  0
  • outofmind codeape  · 技术社区  · 6 年前

    我有一个

    <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 未与同步 模型.myvalue 直到 <input> 属于 我的文本框 失去焦点。即- theOtherInput 除非离开输入字段,否则不会更新 我的文本框 .

    如何强制Dojo在每次按键时使输入与绑定变量同步?我认为这应该是默认的行为,或者至少应该是不费吹灰之力就能做到的,但是我找不到合适的属性。有什么想法吗?

    我的主要问题是,当我通过Enter键提交表单时, 模型.myvalue 在输入之前还有值 我的文本框 获得焦点。(我也不想和 setInterval -我只想让Dojo完成输入与模型同步的工作)

    1 回复  |  直到 6 年前
        1
  •  1
  •   Castro Roy    6 年前

    最接近的是设置 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;
    }