首页 > 解决方案 > Computed Knockout JS 函数似乎没有在 firefox 中取消绑定按键事件

问题描述

我正在使用以下功能与淘汰赛

 self.navigateToSection = ko.pureComputed({
        read: function() {
            return this;
        },
        write: function(data, event) {
            if (event.type == "keydown") {
                if ((event.keyCode != '13')) {
                    return;
                }
            }
          ... (more actions)
        }//write
    });

这是 HTML 绑定

data-bind="event: {keypress: navigateToSection}">

该功能应该有助于在不同部分之间导航,因此用户必须能够按 Tab 键并跳转到不同的链接。它适用于大多数浏览器,除了 Windows 10 中的 firefox 它在 Mac for Firefox 中运行良好

我发现对于不可打印的键不再触发 keypress 事件,但 Enter 键以及 Firefox 的 Shift + Enter 和 Ctrl + Enter 组合键除外。因此,当我按下制表符时,如果我模糊它甚至允许在 FF 中跳转但直到第二次按键之前的元素,它似乎会跳转到具有 tabindex 属性的下一个 HTML 元素。

我尝试取消绑定元素,但效果不佳。有任何想法吗?

标签: firefoxknockout.jsbindkeypresscomputed-observable

解决方案


keypress事件已被弃用。你应该keydown改用。


推荐阅读