2

キーダウン イベント ハンドラーがあり、ユーザーが携帯電話のキーパッド (iPhone など) でコロンを押したかどうかを特定するのに苦労しています。

問題は、ブラウザーがコロンとセミコロンの両方に対して同じevent.keyCode値 (または、ブラウザーによっては ) を返すことです。イベント ハンドラーが起動した時点で、値が属性に追加されていないため、単純な最後の文字を取得し、コロンであるかどうかをチェックするロジックを使用します。event.whichkeydownHTMLInputElement's value

String.fromCharCode()for 186 (iPhone のコロン ボタンの値) を使用するevent.whichと、セミコロンではなく奇妙な円の文字が表示されます。しかし、印刷 するとコロンが表示さString.fromCharCode(59) れます。

これが私のコードの簡単なバージョンです:

isColon : function(event)
                {
                    // first check for desktop browsers 
                    if (event.shiftKey && event.which == constants.KEYS.COLON) //the constant is 186 or 59 depending on browser, this works on all desktop browsers
                        return true;
                    //this doesnt work as event.which=186 which is NOT giving a ":"  when I say String.fromCharCode(event.which)
                    if (String.fromCharCode(event.which) == ":")
                        return true;
                    return false;
                }
4

1 に答える 1

1

代わりにキープレスを使用してください。それでもevent.preventDefault()を使用して、入力に文字が表示されないようにすることができます。

于 2012-11-24T04:53:10.573 に答える