3

我有一个电话领域的情况。在此字段中,用户可以键入以下电话号码:

(00)9999 9999
(00)99999 9999(巴西圣保罗)
和 1234*12(Nextel 号码)

在外业电话上,我配置了一个调用此 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 键?

4

2 回答 2

2

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

于 2012-10-26T20:06:48.350 回答
1

keypress而不是keydown事件。然后您可以根据实际键入的字符而不是按下的键来拒绝。因此,您不必猜测用户的键盘布局。例如,Mac 上的 option+5 不会输入 5,但如果您只查看 shift 键的状态,您会错过它。

于 2012-10-26T20:13:19.093 回答