我正在创建一个具有多个输入字段的表单,当输入处于焦点状态时,我尝试按 Enter 或 Tab 键调用函数。我正在使用以下代码:
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”键。
我尝试到处搜索,但找不到任何帮助。
如有任何帮助,我们将不胜感激。
我找不到自己问题的具体答案,但一种解决方法可能是设置可见性:隐藏到所有其他输入字段,这将始终在键盘中带来输入按钮,我想我应该分享它,以防万一有人正在尝试实现类似的目标。
我很抱歉刷新了一个旧主题,但也许有人会发现这些知识很有用。
我遇到了类似的问题,您需要知道这个问题与浏览器错误或代码中的错误无关。在 Android 上无法处理 keydown 的
event.key
或 event.keyCode
。原因是 Android“虚拟”(或有时称为“软”)键盘 (Gboard) 不提供有关按键的信息,因此我们无法通过在 Web 浏览器中运行的 JS 代码读取它们。
如果您需要更多信息,请查看官方错误报告。
作为替代方案,您可以尝试使用物理键盘或安装其他一些 Android 虚拟键盘,但我知道这并不是问题的解决方案,因为我们不能要求应用程序的最终用户这样做。