Shift键是否在JavaScript中保持不变

时间:2012-05-15 10:52:37

标签: javascript keypress keydown shift

我编写了一个只允许输入数字的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。

感谢任何帮助。

提前致谢。

3 个答案:

答案 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
    }
};

Mozilla Docs

Supported Browsers

答案 2 :(得分:0)

使用按键来按住任何按键按下键