【问题标题】:Knockout - keyCode property not being passed through wrapped function淘汰赛 - 未通过包装函数传递 keyCode 属性
【发布时间】:2013-05-31 14:13:59
【问题描述】:

我已将我的 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 属性(和 @987654332 @ 属性用处不大,因为所有不可打印的字符都是 0)。

我还可以看到event 对象有一个originalEvent 属性,但是这里的keyCode 是一样的, 0。

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

Here is a JsFiddle 演示它。

【问题讨论】:

  • 您在使用 FireFox 吗??

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


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-18
    • 2017-09-05
    • 2016-08-13
    • 1970-01-01
    • 1970-01-01
    • 2014-10-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多