0

整数の検証には次のJavaスクリプト関数を使用します。FireFoxでは正常に機能しましたが、IEとChrome(Fire Foxではない)では、そのテキストボックスにドット(。)記号を使用できます。制御方法はドット(。)を表示しません。 IEとChromeを使用しているときにテキストボックスに記号が表示されますか?

javascript関数

$('.intValidate').live('keypress', function(event) {
    if((event.keyCode != 8)&&(event.keyCode != 9)&&(event.keyCode != 37)&&(event.keyCode != 39)&&(event.keyCode != 46)&&(event.which < 48 || event.which > 57)) {
        event.preventDefault();
    }
});

私は、 のようなクラスを使用します

<input type="text" id="abcd" style="width:30px" maxlength="2" class="intValidate"/>
4

5 に答える 5

1

イベント キー コードを使用した整数の検証が実行可能なオプションだとは思いません。正規表現を使用することをお勧めします。または、上記の方法のみを使用して本当にブロックしたい場合は、keyCode 110 をブロックすることもできます。完全なイベント コードについては、こちらを参照してください。

http://www.webonweboff.com/tips/js/event_key_codes.aspx

http://ntt.cc/2008/05/10/over-10-useful-javascript-regular-expression-functions-to-improve-your-web-applications-efficiency.html正規表現検証用

于 2012-09-25T07:26:39.007 に答える
0

次のようなこともできます。

function isNumber(n) {
    return !isNaN(parseFloat(n)) && isFinite(n);
}
$('.intValidate').live('keyup', function(event) {
    var $this = $(this);
    if (isNumber($this.val())) {
        $this.val(Math.floor($this.val()));
    } else {
        $this.val('')
    }
});
于 2012-09-25T07:41:40.437 に答える
0

まず第一に、キーを押すときのように入力時に検証を行うべきではなく、代わりに、テキストを入力しているテキスト領域の値の変更に対して検証を行う必要があります。これは、次の理由によるものです。

  • 異なるキーボードは、同じキー コードで異なる文字を送信する場合があります。

  • 通常のタイピングに加えて、すべてのシステムには IME モードがあり、Unicode コードポイントで文字を挿入したり、コピーして貼り付けたりする方法があります。

コントロールが変更された後にテキストを検証することで、テキストがどのように挿入されたかを調べる手間を省くことができます。

同様の例を次に示します: JavaScript を使用して HTML の textArea に maxlength を適用する方法

于 2012-09-25T08:07:39.813 に答える