移动设备上的Javascript `.keypress`事件未触发。

7

本页内容:

https://subnetipv4.com/

如果您点击“IP地址”列中的任何输入框,并按下“。”或“/”键(句点或斜杠),将跳转到下一个输入框。

至少,在桌面浏览器上是这样的。在移动浏览器上,似乎无法注册 onkeypress 事件。

以下是启用“跳转”的代码:

        // Function to jump to next box on . or / keys
        function jumpdot(event) {
            // Capture pressed key:
            var y = event.key;

            if (y == "." || y == "/" ) {
                // . or / was pressed, jump to next userinput box and prevent typing of . or /
                event.preventDefault();
                document.getElementsByName(uiNext)[0].focus();
            }
        }

有没有一种简单的方法在手机上启用该功能?
编辑:更新了网站URL。
3个回答

9

keypress事件在DOM Level 3标准中被标记为Legacy

警告:此规范中定义了keypress事件类型,仅供参考和完整性,但该规范不建议使用此事件类型。

请改用keydown事件。信息:Mozilla Developer中的Keydown事件

您还应考虑...

KeyboardEvent.which:警告:此属性已过时;如果可用,请改用KeyboardEvent.key。

KeyboardEvent.keyCode:警告:此属性已过时;如果可用,请改用KeyboardEvent.key。

要读取按下的键,请改用event.key


PS:如果您想看一下,我正在http://www.practicalnetworking.net/subnet2.html上进行测试。 - Eddie
没关系,event.key使用不同的键“代码”。我更新了代码并让它工作了。谢谢你的提示,@Colxi。 - Eddie
很遗憾,这并没有解决原始问题——按下句号或斜杠后跳转到下一个框仍然只适用于桌面浏览器而不是移动浏览器 =/。 - Eddie
我将它更改为event.key,当按下句点或斜杠时返回“。”和“/”。我已经更新了我的代码以查找“。”或“/”来触发jumpdot函数。然而,在移动设备上,我可以随意按下句点或斜杠,但什么也不会发生。 - Eddie
我从event.code切换到event.key,在安卓上可以正常工作。 - undefined
显示剩余2条评论

0

使用 oninput: 代替 onkeypress:


这并没有提供问题的答案。一旦您拥有足够的声望,您将能够评论任何帖子;相反,提供不需要向提问者澄清的答案。- 来自审核 - user1773603

0

ev.keyCode 可以提供帮助。它提供了有关按键的更多信息。


但是根据@colxi的回答,显然它已被弃用。我已将代码更改为event.key,并且那部分代码正在工作。移动功能仍未正常工作。 - Eddie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接