【问题标题】:Dojo: How to get the latest value in a NumberTextBox on onKeyPress or onChange?Dojo:如何在 onKeyPress 或 onChange 上获取 NumberTextBox 中的最新值?
【发布时间】:2010-06-21 09:10:25
【问题描述】:

我有一堆我以编程方式创建的 NumberTextBox。现在,我必须在按键上计算一些值,所以我为此调用了一个函数......看起来像这样:

...
<head>
...
function setNumTextBox() {
    ...
    var val = {
        name: "mytextbox",
        onKeyPress: keyPressFxn
    }
    new dijit.form.NumberTextBox(val, "mytextbox");
}

function keyPressFxn(evt) {
    // do the processing here
}
...

现在,我的问题是这样的。用户键入,例如,“12”。当用户输入“1”时,dijit.byId("mytextbox").attr("value") 为""。当用户键入“2”时,该值现在为“1”。总之,我在函数中得到的值(我也试过“displayedValue”属性)不是最新的。

我尝试使用“intermediateChanges: true”,但在这种情况下它不适用于文本框。现在,我继续使用“onChange”事件而不是“onKeyPress”。我得到了正确的值,但是......我不知道什么叫做 onChange 事件。

问题:

  1. 如果我要使用“onKeyPress”事件,如何获取最新值?意思是,如果我输入“123”,当我访问字段的值/displayedValue 时,我会得到“123”。

  2. 如果我使用“onChange”,如何获取触发 onChange 事件的元素的 ID? (它不像 evt.target.id 这么简单,对吧?试过了,还是不行)

  3. 或者,我必须使用 2 的组合吗?比如,通过 onKeyPress 获取调用者的 id,然后通过 onChange 获取用户输入的更新值?

谢谢!

【问题讨论】:

    标签: dojo onchange onkeypress


    【解决方案1】:

    这应该让你接近你想要的。您可能还需要跟踪 dojo.keys.CLEAR 和 dojo.keys.DELETE 常量。

    function keyPressFxn(evt) {
      var value = this.value;
      if (dojo.keys.BACKSPACE == evt.keyCode ) {
        console.log(value.substr(0, value.length - 1));
      } else {
       console.log(value + String.fromCharCode(evt.charCode));
      }
    }
    

    【讨论】:

      【解决方案2】:

      我会认真考虑改用 onkeyup 事件。 found this in another stackoverflow answer:

      因为您正在使用按键事件。按键有 3 个阶段:

      1. 按下键:按下键时
      2. 按键保持:按键被按住
      3. key up: key is release 在你的情况下,问题可以通过使用 keyup 事件来解决

      【讨论】:

        【解决方案3】:

        不确定这是否只是因为 API 在过去 2 年发生了变化 - 但是:

        mytextbox.get("value") 在事件触发时提供最新值

        (请注意:mytextbox.value 在验证文本框之前不会给出最新值)

        【讨论】:

          猜你喜欢
          • 2014-05-24
          • 2021-01-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-06-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多