我正在使用 onKeyDown 和正则表达式来解析键盘输入。我需要它到所有 A-Z、退格键和问号。问题来自 ?,我无法接受它。我努力了
/[A-Z\x08?]/
/[A-Z\x08\?]/
/[A-Z\x08\\?]/
/[A-Z\x08\x3F]/
没有一个允许 ?被接受。
function kd(evt) {
var theEvent = evt || window.event;
var key = theEvent.keyCode || theEvent.which;
key = String.fromCharCode(key);
var regex = /[A-Z\x08]/;
if (!regex.test(key)) {
theEvent.returnValue = false;
if (theEvent.preventDefault) theEvent.preventDefault();
}
}
如有任何帮助,我们将不胜感激。
最佳答案
问号应该放在 character class 里面:
/[A-Z\x08?]/
另一个问题是您应该使用 onkeypress
来确定键入的是哪个字符。 onkeyup
和 onkeydown
事件只告诉您按下和释放了哪些键,但没有说明这些对应的字符。在不同的键盘上,您必须按不同的键才能生成相同的字符。
例如,在我的键盘上,我必须按 Shift 和 + 才能得到 ?
。在美式键盘上,您通常必须按 Shift 和 / 才能得到 ?
。由于键盘布局的这种差异,使用 onkeyup 和 onkeydown 事件来检测 ?
是不可靠的。
关于javascript - Javascript中的正则表达式来解析onKeyDown的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14035033/