检测是否按下了Shift

时间:2012-10-26 20:02:23

标签: javascript

我在手机领域遇到过这样的情况。在此字段中,用户可以键入以下电话号码:

(00)9999 9999
(00)99999 9999(在圣保罗巴西)
和 1234 * 12(Nextel Numbers)

在外地手机上,我配置了一个调用此javascript函数的onkeydown事件:

function validateKeyDownPhone(event) {

    var c = event.keyCode
        keychar=String.fromCharCode(c)
        valid = true

    /**
     * Excluding enter, backspace, etc. 
     */
    if (c > 46 ) {          
        if (keychar != null) {  
            var re = new RegExp("^[0-9\*#\(\) ]+$")
            matched = keychar.match(re)
            valid = matched != null && matched.length > 0
        }
    }
    event.returnValue = valid
}

它工作正常,但是当我按SHIFT + 5时会产生%,例如。

如何确定是否按下了shift键?

2 个答案:

答案 0 :(得分:2)

event.shiftKey属性应该告诉您该信息。

答案 1 :(得分:1)

收听keypress而不是keydown事件。然后你可以根据实际输入的字符拒绝,而不是按下的键。因此,您无需猜测用户的键盘布局。例如,mac上的选项+ 5不会输入5,但如果你只看到shift键的状态,你就会错过。