1

フォームの検証を行っているところですが、どの電話番号が数字のみである必要があります! コードはクロムではうまく機能しますが、Firefox と IE では機能しません。解決策を教えてください

私のコードは次のとおりです

function noLet(event) {
    if (event.keyCode == 46 || event.keyCode==8 || event.keyCode > 47 && event.keyCode <      58) {
        event.returnValue = true;
    } 
    else {
        event.returnValue = false;
    }
}

HTML:

 onkeypress="noLet(e)"><label id="mobph"></label><font 

size="1"><br>Max 10 numbers only allowed!</font> 
4

4 に答える 4

2

あなたの問題を解決するために、次のコードをお勧めします。これが私がやっていることです。テスト済みで、chrome と firefox の魅力のように動作します。

//return numbers and backspace(charCode == 8) only
function noLet(evt) {
    var charCode = (evt.which) ? evt.which : evt.keyCode;
    if (charCode >= 48 && charCode <= 57 || charCode == 8)
        return true;
    return false;
于 2014-10-17T16:12:19.837 に答える
1

キー/文字コードを使用して、押されたキーが数字かどうかを検出できます。最初に、キー/文字コードがクロス ブラウザーであることを検出する必要があります(互換性をさらに保証するために、イベントとして使用することを忘れないevent.keypressでください) 。その後、10 進数値から文字に変換します。次に、関数内の最初の値を int として解析できない場合にparseInt()返される整数として解析できます。NaNである場合は、デフォルトのアクションを防止しますNaN

var numbersOnly = function(e){
    var charCode = (typeof e.which === "number") ? e.which : e.keyCode,
        chr = String.fromCharCode(charCode);
    if(isNaN(parseInt(chr, 10))) e.preventDefault();
}

<input type="text" name="phoneNumber" onkeypress="numbersOnly(event);">
于 2012-08-05T06:08:02.250 に答える
0

少なくとも Firefox では、それは keypress ハンドラーでcharCodeはなくkeyCode、「returnValue」は無視されるためです (preventDefault()挿入を停止するために呼び出します)。

于 2012-08-05T06:12:38.257 に答える