最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Detect if Shift is pressed - Stack Overflow

programmeradmin1浏览0评论

I have a situation on a phone field. On this field, the user can type the following phone numbers:

(00)9999 9999
(00)99999 9999 (in São Paulo Brasil)
and 1234*12 (Nextel Numbers)

On the field phone I configure an onkeydown event that call this javascript function:

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
}

It works fine, but when the I press SHIFT + 5 results in %, for example.

How can I identify if the shift key was pressed?

I have a situation on a phone field. On this field, the user can type the following phone numbers:

(00)9999 9999
(00)99999 9999 (in São Paulo Brasil)
and 1234*12 (Nextel Numbers)

On the field phone I configure an onkeydown event that call this javascript function:

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
}

It works fine, but when the I press SHIFT + 5 results in %, for example.

How can I identify if the shift key was pressed?

Share Improve this question edited Oct 26, 2012 at 20:03 j08691 208k32 gold badges269 silver badges280 bronze badges asked Oct 26, 2012 at 20:02 thiago.lenzthiago.lenz 4094 silver badges11 bronze badges
Add a ment  | 

2 Answers 2

Reset to default 4

The event.shiftKey attribute should tell you that information.

Listen to the keypress instead of keydown event. Then you can reject based on the actual typed character, not the pressed key. So you don't have to to make guesses about the user's keyboard layout. For example, option+5 on a mac does NOT type 5, but you would miss that if you only watch the state of the shift key.

发布评论

评论列表(0)

  1. 暂无评论