【发布时间】:2012-05-22 20:59:59
【问题描述】:
我写了一个只允许输入数字的JS函数。该函数的副本如下:
function NumbersOnly(e) {
var evt = e || window.event;
if (evt) {
var keyCode = evt.charCode || evt.keyCode;
//Allow tab, backspace and numbers to be pressed, otherwise return false for everything.
//(keyCode>=96 && keyCode<=105) are the numpad numbers
if ((keyCode >= 48 && keyCode <= 57) || (keyCode >= 96 && keyCode <= 105) || keyCode === 9 || keyCode === 8) {
}
else {
evt.returnValue = false;
}
}
}
此功能适用于所有数字,但是当按住 shift 键并按下其中一个数字键时会出现问题。返回的值是数字上方的字符之一。因此,例如,如果我按住 shift 并按 7,则返回 '&' 但 keyCode 仍然是 55!我本以为会有所不同。
所以我的问题是如何检查 shift 键是否被按住。 我尝试了以下检查,但这没有用:
if (keyCode === 16) {
evt.returnValue = false;
}
else {
if ((keyCode >= 48 && keyCode <= 57) || (keyCode >= 96 && keyCode <= 105) || keyCode === 9 || keyCode === 8) {
}
else {
evt.returnValue = false;
}
}
我正在使用 ASP.NET 4.0。
如有任何帮助,我们将不胜感激。
提前致谢。
【问题讨论】:
-
如果你在console.log中给出evt,你会看到shiftKey属性,如果按下shift键,它就会变成true
标签: javascript keypress keydown shift