Tab 键未在手机中注册为 keydown

问题描述 投票:0回答:2

我正在创建一个具有多个输入字段的表单,当输入处于焦点状态时,我尝试按 EnterTab 键调用函数。我正在使用以下代码:

name_input.addEventListener("keydown", function(e){

        alert("Except Tab"); //This runs on press of any key except tab.

        if((e.key=="Enter")||(e.keyCode==9)){  //This if works fine on desktop but not in mobile.
            e.preventDefault();
            if(name_input.value.length!=0){
                hide(".js-reply-1", 2);
                document.querySelector(".c-dialogue.name").innerHTML = "Hello, " + name_input.value;
                alert("hello"); //This doesn't run on the press of "Tab" in mobile.
                intro_tl.resume();
            } 
        }
    });

在桌面上一切都按预期工作,但在移动设备中,事件侦听器完全检测不到Tab按键,并且其中的代码不会运行。我还附上了按钮的图片,以防万一我将错误的键称为“Tab”键。

我尝试到处搜索,但找不到任何帮助。

如有任何帮助,我们将不胜感激。

javascript android mobile dom-events keydown
2个回答
1
投票

我找不到自己问题的具体答案,但一种解决方法可能是设置可见性:隐藏到所有其他输入字段,这将始终在键盘中带来输入按钮,我想我应该分享它,以防万一有人正在尝试实现类似的目标。


0
投票

我很抱歉刷新了一个旧主题,但也许有人会发现这些知识很有用。

我遇到了类似的问题,您需要知道这个问题与浏览器错误或代码中的错误无关。在 Android 上无法处理 keydown 的

event.key
event.keyCode
。原因是 Android“虚拟”(或有时称为“软”)键盘 (Gboard) 不提供有关按键的信息,因此我们无法通过在 Web 浏览器中运行的 JS 代码读取它们。

如果您需要更多信息,请查看官方错误报告

作为替代方案,您可以尝试使用物理键盘或安装其他一些 Android 虚拟键盘,但我知道这并不是问题的解决方案,因为我们不能要求应用程序的最终用户这样做。

© www.soinside.com 2019 - 2024. All rights reserved.