3

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?

j08691
  • 204,283
  • 31
  • 260
  • 272
thiago.lenz
  • 399
  • 4
  • 11

2 Answers2

4

The event.shiftKey attribute should tell you that information.

complex857
  • 20,425
  • 6
  • 51
  • 54
1

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.

Neal Ehardt
  • 10,334
  • 9
  • 41
  • 51