function NumberKey(event) {
let charCode = event.which || event.keyCode;
console.log(event.keyCode)
if ((charCode >= 48 && charCode <= 57) || // Number (0-9)
(charCode >= 96 && charCode <= 105) || // Numberpad (0-9)
(charCode >=112 && charCode <= 123)|| // F keys (F1~12)
charCode === 8 || // backspace
charCode === 9 || // tab
charCode === 13|| // enter
charCode === 37 || // arrow left
charCode === 39 || // arrow right
charCode === 46){ // delete
}else{
event.preventDefault();
return false;
}
}
这是我的代码,用于防止用户输入数字以外的任何内容
当我将其应用为
时onkeydown="返回NumberKey(事件)"
{%(带偏移) `qwertyuipasdfgh'zxcvb。 (无班次) +基于输入法的语言 可以打字
onkeypress="返回 NumberKey(事件)"
!@#$%^&*()(带移位) +基于输入法的语言 可以打字
当我同时应用两者时, %(带偏移) +基于输入法的语言 可以打字
我不明白这个结果的某些事情
为什么 onkeypress 和 onkeydown 会给出不同的结果?
为什么 onkeypress 让 % 打印出来,而它却阻止了所有其余的特殊字母?
对于另一个问题,我需要帮助
通过控制台,我发现基于 IME 的语言不被算作事件。 我做了一些搜索,发现 IME 将字母作为组合的一部分删除, 最终,在这封信显示在屏幕上之前,我从来没有让我把它拿走。
我知道 input type="password" 会强制禁用 IME, 强制用户仅输入英文。 这很有趣,只是字母被隐藏了, 所以我不能用它们作为电话号码或 ID
尝试过 ime-mode:disabled,发现它很久以前就因为安全问题而被弃用了。
我在网上发现很多人只是让用户输入任何内容 如果键入的项目不满足某些条件,则随后删除, 这绝对不是我想要的...
document.addEventListener('DOMContentLoaded', function() {
const inputElement = document.getElementById('yourInputElementId');
inputElement.addEventListener('compositionstart', function(event) {
event.preventDefault();
});
inputElement.addEventListener('compositionupdate', function(event) {
event.preventDefault();
});
inputElement.addEventListener('compositionend', function(event) {
event.preventDefault();
});
});
这是ChatGPT建议的,但根本不起作用。
抱歉写得太长了 请帮我!我已经坚持了好几天了!
我认为使用正则表达式在这里会有所帮助 - 尽管它有很多自己的特殊语法需要学习/导航。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test 它可以检测字符、范围、允许它们和不允许它们。
如果不适用或我忽略了某些内容,请道歉