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)
、押された文字ではなく、これらの文字を表す理由です。