1

我已经将我的 Knockout 绑定设置为有一个按键事件,因为我希望Enter在输入字段上进行检测。

如果我有以下情况:

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

我的视图模型有

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

然后 keyCode 按预期显示。

但是,我希望向函数传递一个附加参数KeyPress,所以按照这里的示例,我现在有了

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这里的in是一样的,0。

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

这是一个演示它的 JsFiddle

4

1 回答 1

3

我猜你0只能在 Firefox 中得到这个结果

所以把你的代码改成这样:

this.KeyPress = function(p, data, event) {
    console.log(window.event ? event.keyCode : event.which);
}
于 2013-05-31T14:54:39.293 回答