我在手机领域遇到过这样的情况。在此字段中,用户可以键入以下电话号码:
(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键?
答案 0 :(得分:2)
event.shiftKey
属性应该告诉您该信息。
答案 1 :(得分:1)
收听keypress
而不是keydown
事件。然后你可以根据实际输入的字符拒绝,而不是按下的键。因此,您无需猜测用户的键盘布局。例如,mac上的选项+ 5不会输入5,但如果你只看到shift键的状态,你就会错过。