2

jQueryで入力マスク用の関数を作成しました:

$.fn.mask = function(regex) { 
    this.on("keydown keyup", function(e) {
        if (regex.test(String.fromCharCode(e.which))) {
            return false;
        }
    });
}

渡す正規表現に基づいて入力を拒否します。例:

$("#textfield").mask(/\s/); // denies white spaces
$("#textfield").mask(/\D/); // denies anything but numbers

上記の例は機能しますが、正規表現を使用して、次のように小数点記号付きの数値を受け入れようとしています。

$("#textfield").mask(/[^\d.,]/); // Anything except digits, dot and comma

それはうまくいきません。しかし、またはString.fromCharCode(e.which)を押したときにコンソールにログオンすると、これらの(それぞれの)文字が表示されます:および..,¾¼

問題はString.fromCharCode(e.which)、押された文字ではなく、これらの文字を表す理由です。

4

1 に答える 1

3

キーのレイアウト位置ではなく、キーボードから生成された実際の文字を処理したい。

$.fn.mask = function(regex) { 
    this.on("keypress", function(e) {
        if (regex.test(String.fromCharCode(e.which))) {
            return false;
        }
    });
}

このkeypressイベントは、生成された文字のコード ポイントを報告します。

http://jsfiddle.net/USgNJ/

于 2013-08-14T17:54:19.480 に答える