Firefoxで問題の原因となるバニラJavaScriptコードの一般的な部分を整理するための助けが必要です。数字のみのJavaScript Firefoxソリューション
次の/ keyCodeチェックは、数字だけをinput
またはtextarea
に許可する最も一般的なバニラJSソリューションに関するようです。
var charCode = (e.which) ? e.which : e.keyCode;
if (charCode > 31 && (charCode < 48 || charCode > 57)) {
return false;
}
return true;
タグでonkeypress="return function(event);"
と呼びます。
しかし、Firefoxは他のブラウザと同様に、onkeyup
とonkeydown
のように、矢印キーをonkeypress
コールにバインドするように見えます。これは例えば左矢印キーのcharCode
は37
ですが、%(シフト+ 5)にはcharCode
もあります。さらに重要なことは、矢印キーをナビゲーション(キャレット/テキストカーソルを左右に移動)に使用できないことを意味します。
しかし、差が(http://www.asquare.net/javascript/tests/KeyCode.htmlに示されるように)%が37
のcharCode
とwhich
を有しながら、左矢印キーは、keyCode 37
を有することです。しかし、私はこのように感じるそれを行うための最善のか、クリーンな方法ではなく、異なる処理を複数のキーがあるかもしれないと
if (charcode > 31 && (charcode < 48 || charcode > 57)) {
if (e.keycode && e.keyCode > 36 && e.keyCode < 41) {
return true;
}
return false;
}
return true;
:だから私は、矢印キーで次の操作を実行して、うまく動作させることができましたFirefoxでは、矢印キーだけではありません。より洗練されたバニラJSソリューションや、この機能の中で少なくとも矢印キーをチェックする方法は何でしょうか?
多くの感謝!
編集:私はちょうどそれで、これらは今37-40(すなわち%)charCodesを入力できるように、コードはFirefoxのためにそれを解決していても、それは他のすべてのブラウザのための新たな問題を紹介することを考え出しました。例えば、keyCode
をチェックする代わりに、charCode
またはwhich
をチェックする必要があります。
を知っていますが '?特定のキーをブロックするのはあまりユーザーフレンドリーではないため、キーボードが壊れていると思われる可能性があります。また、(コンテキストメニューでも)コピー/貼り付けを使用することができますので、決して終わらないでしょう。そのままの状態でユーザー入力を受け入れ、後でそれを検証してください。おそらく、入力の近くの色の表示やメッセージを使って確認してください。 – trincot
私はそれを知っていますが、それは本当にここのニーズに合っていません。また、私が知ることから、他の文字以外のキーは、 'onkeydown'や' onkeyup'ではなく、ちょうど良い動作をしているようです(後で、 'onkeypress'だけで入力/テキストエリアから離れてしまいます)明白な数字だけが入力され、何かをコピー/ペーストする場合は、テキストを数字にリセットします。しかし、矢印のナビゲーションは必須であり、Firefoxは私が少なくともそれらの作業をうまく行うことを心配するほどの人気のあるブラウザです。 –
元のコードは、元のコードが意図している他の文字が入力されないようにするためではなく(単に入力するだけでなく、単に入力の代わりにテキストエリアに入力する) 。しかし、元のコードを使用することは、解決策が同じであるため、問題を明るくしてより良い解決策を求める最も簡単で明瞭な方法でした。それをクリアする希望。 :) –