我编写了一个只允许输入数字的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,'&amp;'返回,但keyCode仍然是55!我本以为会有所不同。
所以我的问题是如何检查换档键是否被按下。 我尝试过以下检查,但这不起作用:
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。
感谢任何帮助。
提前致谢。
答案 0 :(得分:12)
您可以使用以下方法检查是否按下了Shift键
if(evt.shiftKey) {
... //returns true if shift key is pressed
答案 1 :(得分:0)
使用 event.key
代替charCode
。 没有更多神奇的数字!
function onEvent(event) {
const key = event.key; // "a", "1", "Shift", etc.
if (isFinite(key)) { // Is number
// Do work
}
};
答案 2 :(得分:0)
使用按键来按住任何按键按下键