2

ユーザーがテキストフィールドに無効な文字を入力するのを防ぐために、次のJavaScriptを使用しています。Chromeではうまく機能しますが、Firefoxでは機能しません。backspaceFirefoxのテキストフィールドにキーが入力されないようにしています。

function onlyNumbers(evt) {
    var theEvent = evt || window.event;
    var key = theEvent.keyCode || theEvent.which;
    key = String.fromCharCode( key );
    var regex = /[0-9]|\./;
    if( !regex.test(key) ) {
        theEvent.returnValue = false;
        if(theEvent.preventDefault) theEvent.preventDefault(); 
    }
}

誰かが見て、バックスペースキーがテキストフィールドに作用するのを妨げないようにFirefoxの修正を提案できますか?

おそらく、バックスペース文字の正規表現を追加すると、ここで機能するでしょう。誰かが知っていますか、一致する正規表現を追加する方法backspace

編集:

また、上記のコードはTabキーの動作を中断することになっているため、キーを使用してフォームの次のフィールドにジャンプすることはできませんTab

4

2 に答える 2

7

http://jsfiddle.net/8ZJZD/1/を参照してください

var el=document.getElementById('cnfMobileNo');
el.onkeydown=function onlyNumbers(evt) {
    var theEvent = evt || window.event;
    var key = theEvent.keyCode || theEvent.which;
    if(key===8){return;}
    key = String.fromCharCode(key);
    var regex = /[0-9]|\./;
    if( !regex.test(key) ) {
        theEvent.returnValue = false;
        if(theEvent.preventDefault) theEvent.preventDefault();
    }
}

使用するだけif(key===8){return;}

編集:

より多くのキーを除外する場合は、

var el=document.getElementById('cnfMobileNo');
el.onkeydown=function onlyNumbers(evt) {
    var theEvent = evt || window.event,
        key = theEvent.keyCode || theEvent.which,
        exclusions=[8,9]; /*Add exceptions here */
    if(exclusions.indexOf(key)>-1){return;}
    key = String.fromCharCode(key);
    var regex = /[0-9]|\./;
    if( !regex.test(key) ) {
        theEvent.returnValue = false;
        if(theEvent.preventDefault) theEvent.preventDefault();
    }
}

ここでそれを参照してください:http://jsfiddle.net/8ZJZD/2/

keyCodeあなたはを使用して各キーのを知ることができますalert(key)

(前key = String.fromCharCode(key))。

除外することもできます

  • 矢印キー:37、38、39、40
  • Enter:13
  • コンテキストメニュー:93
  • StartおよびEnd:36,35
于 2012-09-02T14:56:04.683 に答える
0

バックスペースの正規表現がわかりませんが、これも機能するはずです

$("#myInput").bind('keyup', function(){
     val1 = $(this).val();
     $(this).val(val1.replace(/[^0-9.]/g,''));
});

バインドを廃止して、キーアップを直接アタッチすることができます

フィドル-jsfiddle

于 2012-09-02T14:57:38.783 に答える