如何解决输入4个字母和4个数字没有特殊字符限制,但允许功能键吗?
我想将文本输入限制为只有4个字母,然后是4个数字,没有特殊字符且没有空格。
我写的代码:
inputText.addEventListener("keydown",(e) => {
if (e.key === "Enter") {
if (!inputText.checkValidity()) {
alert('Pattern not matched!!')
return;
}
}
let pos = e.target.selectionStart;
pos < 4 ? /^[A-Z]$/.test(e.key) ? '' : e.preventDefault() : /^[0-9]$/.test(e.key) ? '' : e.preventDefault();
})
现在的问题是,如果我尝试从字段中删除输入值,则无法执行,因为使用当前代码阻止了该输入值,我只能输入数字和字母。
现在,为了允许他们,我不得不采用基于Keycode
的方法,但是不建议使用keyCode
。
如何仅允许4 Letter > 4 Letter
没有空格没有特殊字符。并允许功能按钮像退格键和所有键一样工作。.
解决方法
对于要完成的操作的一般结构没有过多评论,这只是捕获退格键的最简单方法:
if (e.key === "Enter") {
if (!inputText.checkValidity()) {
alert('Pattern not matched!!')
return;
}
} else if (e.key === 'Backspace') {
return;
}
else if
部分需要扩展到您试图从处理中转义的其他键(例如else if (e.key === 'Backspace' || e.key === 'ArrowLeft')
)。
要考虑的关键值可以在MDN上找到。
另一种选择是解决问题,排除所有不需要的字符,并允许其余字符通过。
我通常会提倡对文本输入进行后期处理,而不是阻止其输入-因此,当用户输入文本输入时,请测试完整的输入而不是防止输入错误。
键盘输入有许多排列,因此在此级别进行处理可能有些晦涩。但是,这可能不符合您的要求。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。