提问者:小点点

在页面加载时开始输入时,在输入字段中添加字符,而不对输入进行聚焦


这是我的代码

null

document.addEventListener('keyup', logKey);
function logKey($event) {
  var charCode = $event.keyCode;
  if(charCode > 31 && (charCode < 48 || charCode > 57 || charCode > 107 || charCode > 219 || charCode > 221) && charCode != 40 && charCode != 32 && charCode != 38 && charCode != 41 && (charCode < 43 || charCode > 46)){
      var inputElement = document.getElementById("input");
      inputElement.focus();
      inputElement.value = inputElement.value + $event.key;
  }
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js"></script>
<input type="text" id="input">

null

在页面加载时,如果用户开始键入,焦点将聚焦输入,但不允许用户输入键入的字符。到目前为止,焦点是工作的,但当用户连续键入时,它并不像预期的那样工作。请帮帮我。任何帮助都将不胜感激。


共1个答案

匿名用户

问题中的代码中的问题是,您将刚刚在输入中键入的字符追加到输入中,实际上复制了该字符。

考虑到你在评论中对你的预期目标所做的陈述:

当用户开始输入时,我只需要专注于输入

您可以将按键事件处理程序附加到文档上,该事件处理程序在键入字符后立即将焦点设置在输入上:

null

$(document).on('keypress', e => {
  var charCode = e.keyCode;
  if (charCode > 31 && (charCode < 48 || charCode > 57 || charCode > 107 || charCode > 219 || charCode > 221) && charCode != 40 && charCode != 32 && charCode != 38 && charCode != 41 && (charCode < 43 || charCode > 46)) {
    $('#input').focus();
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" id="input">