価格フィールドがあり、数字だけを受け入れたい (input[number] などのデフォルトの html5 入力は好きではない) だから私はこれを書いた:
<input type="text" name="price" placeholder="" onkeypress="validate(event)">
function validate(evt) {
var theEvent = evt || window.event;
var key = theEvent.keyCode || theEvent.which;
key = String.fromCharCode( key );
var code = theEvent.keyCode || theEvent.which;
var regex = /[0-9]/;
if( !regex.test(key) && code != 8/*backspace*/ && code != 37/*left*/ && code != 39/*right*/ && code != 13/*enter*/ && code != 46/*delet*/ && code != 9/*tab*/){
theEvent.returnValue = false;
if(theEvent.preventDefault) theEvent.preventDefault();
};
};
左矢印キーや右矢印キー、タブなどのいくつかの文字が表示されるように、ナビゲーションを改善するために追加されています。Chromeで完璧に動作します。Firefox では、一部の文字が意図せず追加されます。たとえば、左矢印キーと % のキー コードは同じです。これで、価格フィールドが Firefox で % を受け入れるようになりました! 同じ問題を抱えた単純な正規表現コードも見つけました。どうすればFirefoxに理解させることができますか?!