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 のオプション + 5 は 5 を入力しませんが、シフト キーの状態だけを見ていると、それを見逃すことになります。

于 2012-10-26T20:13:19.093 に答える