使用多个输入元素时不会触发 Android Chrome 按键事件“Enter”

Mar*_*wis 7 html javascript events android google-chrome

当用户单击 Android 中的“Enter”按钮(右下角按钮)时,我无法捕获该事件。我尝试了“keyup”、“keydown”、“keypress”和原生 JS 事件监听器函数。它可以在 PC 或 Android 系统的默认浏览器上运行。

这是我的测试代码:

<form>
  <input type="text" id="test" name="1">
  <input type="text" id="test2" name="2">
  <input type="text" id="test3" name="3">
</form>

<script src="https://code.jquery.com/jquery-3.3.1.js"
integrity="sha256-2Kok7MbOyxpgUVvAk/HJ2jigOSYS2auK4Pfzbm7uH60="
crossorigin="anonymous"></script>

<script>
  $('#test').keyup(function(e){
    alert('keyup ' + e.keyCode);
  });
  $('#test').keydown(function(e){
    alert('keydown ' + e.keyCode);
  });
  $('#test').keypress(function(e){
    alert('keypress' + e.keyCode);
  });
</script>
Run Code Online (Sandbox Code Playgroud)

发生的情况是,它“制表符”到下一个字段,但不是使用 keypress/keydown/keyup 和 keyCode 选项卡,只是一个似乎无法捕获的选项卡。当您在最后一个输入中按“enter”(在本例中为#test3)时,它确实会触发 keyCode 13 的事件,因为它是表单中的最后一个元素(它不会触发此代码中的任何内容,但我已经对其进行了测试)

小智 2

自 101 版本以来,Adroid Google Chrome 中也存在同样的问题。Enter按键事件仅发生在最后一个表单或文档文本输入框中。可能的解决方案:

  1. 使用 onchange 或 onblur 事件。
  2. 将文本输入放在单独的表单中,并防止默认表单提交事件。