knockout.js Knockout - keyCode属性未通过 Package 函数传递

4nkexdtk  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(88)

我已经将Knockout绑定设置为具有按键事件,因为我希望检测输入字段上的Enter。
如果我有以下情况:

data-bind="event: { keypress: KeyPress }"

而我的视图模型

this.KeyPress = function(data, event) {
    console.log(event.keyCode);
}

那么keyCode将按预期显示。
但是,我希望向函数KeyPress传递一个额外的参数,因此,按照here中的示例,我现在有

data-bind="event: { keypress: function (data, event) { KeyPress('myParam', data, event); return true; } }" />

对应的函数变成了

this.KeyPress = function(p, data, event) {
    console.log(event.keyCode);
}

现在,keyCode属性总是返回0。我可以看到,在event对象中,为每个按键设置了charCode属性,但没有设置keyCode属性(charCode属性没有太大用处,因为所有不可打印的字符都是0)。
我还可以看到event对象有一个originalEvent属性,但这里的keyCode是相同的,* 即 * 0。
那么,谁能告诉我如何通过函数文本获得keyCode属性传播呢?
Here is a JsFiddle演示它。

wpcxdonn

wpcxdonn1#

我猜你只有在firefox中才会得到这个结果0
因此将代码更改为:

this.KeyPress = function(p, data, event) {
    console.log(window.event ? event.keyCode : event.which);
}

相关问题