【问题标题】:With Knockout, TAB is not firing change event使用 Knockout,TAB 不会触发更改事件
【发布时间】:2016-03-23 06:50:03
【问题描述】:

在我看来,有

<td><input type="text" data-bind="value:TotalAmount, inputmask: { value:TotalAmount}, event:{change: $root.totalAmountChanged}" /></td>

当我跳出输入字段时,更改事件不会触发,但如果我按 ENTER,它会触发。理想情况下,它应该在 TAB 上触发。

所以,我将它添加到我的视图模型中:

self.changeOnTab = function(obj, event) {
    if (event.keyCode == 9) {
        $(event.target).change();
    }

并更改了我的视图以添加 keydown 事件:

<td><input type="text" data-bind="value:TotalAmount, inputmask: { value:TotalAmount}, event:{change: $root.totalAmountChanged, keydown: $root.changeOnTab}" /></td>

现在,当我点击 TAB 时,会触发更改事件,但是当我在输入字段中键入任何数字时,它们会被忽略。看起来我在 changeOnTab 函数中遗漏了一些东西,当 keyCode 不是 9 时,应该保留我的值。

【问题讨论】:

  • 在字段中输入时不会触发 onchange 事件。一旦您离开该字段,它就会触发,并且它会看到该值与您第一次进入该字段时的值不同。
  • 制表键有点不同。如果你想让 tab 键发生一些事情,你需要用 on key down 事件处理程序来捕获它。

标签: javascript events knockout.js


【解决方案1】:

我们拥有 observables 的一个关键原因是您不必查看 DOM 元素,您可以查看 observables。订阅TotalAmount,当它的值发生变化时,随心所欲。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-11
    • 2014-08-16
    • 2021-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多