在Shift键,在JavaScript中按住(Is the shiftkey held down i

2019-06-24 10:41发布

我写了一个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键,然后按7,“&”返回,但键代码仍然是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。

任何帮助将受到欢迎。

提前致谢。

Answer 1:

您可以检查shift键使用按:

if(evt.shiftKey) {
 ...  //returns true if shift key is pressed


Answer 2:

使用event.key而非charCode没有更多的幻数!

function onEvent(event) {
    const key = event.key; // "a", "1", "Shift", etc.
    if (isFinite(key)) { // Is number
        // Do work
    }
};

Mozilla的文档

支持的浏览器



文章来源: Is the shiftkey held down in JavaScript