使用Knockout,TAB不会触发更改事件

时间:2015-12-16 23:02:10

标签: javascript events knockout.js

在我看来,有

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

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

所以,我把它添加到我的viewmodel:

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为NOT 9时,应保留我的值。

1 个答案:

答案 0 :(得分:0)

我们有observable的一个关键原因是你不必看DOM元素,你可以观察observable。订阅TotalAmount,告知其价值变化时您想做的事情。