这是我的代码
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
在页面加载时,如果用户开始键入,焦点将聚焦输入,但不允许用户输入键入的字符。到目前为止,焦点是工作的,但当用户连续键入时,它并不像预期的那样工作。请帮帮我。任何帮助都将不胜感激。
问题中的代码中的问题是,您将刚刚在输入中键入的字符追加到输入中,实际上复制了该字符。
考虑到你在评论中对你的预期目标所做的陈述:
当用户开始输入时,我只需要专注于输入
您可以将按键
事件处理程序附加到文档
上,该事件处理程序在键入字符后立即将焦点设置在输入
上:
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">