对于Knockout,TAB不会触发更改事件

With Knockout, TAB is not firing change event

本文关键字:事件 Knockout TAB 对于      更新时间:2023-09-26

在我看来,有

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

当我用TAB键退出输入字段时,更改事件不会触发,但如果我按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时,应该保留我的值。

我们有可观察性的一个关键原因是,您不必观察DOM元素,您可以观察可观察器。订阅TotalAmount,并在其值更改时执行任何您想执行的操作。