Knockout - 没有通过包装函数传递的keyCode属性

时间:2013-05-31 14:13:59

标签: javascript javascript-events knockout.js keycode function-literal

我已将我的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属性,但不是{{1 property(和keyCode属性没什么用,因为所有不可打印的字符都是0)。

我还可以看到charCode对象具有event属性,但此处的originalEvent是相同的, 0。

那么有人能告诉我如何通过函数文字传播keyCode属性吗?

Here is a JsFiddle证明了这一点。

1 个答案:

答案 0 :(得分:3)

我猜你只在firefox

中得到了这个结果0

所以将代码更改为:

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