ハイフン、コンマ、スラッシュ、スペースキー、バックスペースキー、削除キーなどの特殊文字を英数字の値とともに許可し、jQuery で残りを制限するにはどうすればよいですか?
この基準(許可される文字/入力値)はフィールドごとに異なるため、入力フィールドIDと許可される文字をパラメーターとして受け入れるユーティリティメソッドとして作成したいと考えています。例: limitCharacters(textid, pattern)
ハイフン、コンマ、スラッシュ、スペースキー、バックスペースキー、削除キーなどの特殊文字を英数字の値とともに許可し、jQuery で残りを制限するにはどうすればよいですか?
この基準(許可される文字/入力値)はフィールドごとに異なるため、入力フィールドIDと許可される文字をパラメーターとして受け入れるユーティリティメソッドとして作成したいと考えています。例: limitCharacters(textid, pattern)
keyCode をオンにして、一致する場合はkeydown
実行するだけです。preventDefault()
$('input').keydown(function(e) {
if (e.which == 8) { // 8 is backspace
e.preventDefault();
}
});
特定の文字とキーコードに制限し、それを jQuery プラグインにする必要がある場合は、次のようなものを試してください。
$.fn.restrict = function( chars ) {
return this.keydown(function(e) {
var found = false, i = -1;
while(chars[++i] && !found) {
found = chars[i] == String.fromCharCode(e.which).toLowerCase() ||
chars[i] == e.which;
}
found || e.preventDefault();
});
};
$('input').restrict(['a',8,'b']);
私はこのようなことをしましたが、jQueryプラグイン形式です。この例では、数字とピリオドのみを許可します。
次のように記述して呼び出すことができます。
$("input").forceNumeric();
そしてプラグイン:
jQuery.fn.forceNumeric = function () {
return this.each(function () {
$(this).keydown(function (e) {
var key = e.which || e.keyCode;
if (!e.shiftKey && !e.altKey && !e.ctrlKey &&
// numbers
key >= 48 && key <= 57 ||
// Numeric keypad
key >= 96 && key <= 105 ||
// comma, period and minus, . on keypad
key == 190 || key == 188 || key == 109 || key == 110 ||
// Backspace and Tab and Enter
key == 8 || key == 9 || key == 13 ||
// Home and End
key == 35 || key == 36 ||
// left and right arrows
key == 37 || key == 39 ||
// Del and Ins
key == 46 || key == 45)
return true;
return false;
});
});
}
バックスペースや削除などの修飾キーにはDavidソリューションを使用し、文字には以下のコードを使用することをお勧めします。
var chars = /[,\/\w]/i; // all valid characters
$('input').keyup(function(e) {
var value = this.value;
var char = value[value.length-1];
if (!chars.test(char)) {
$(this).val(value.substring(0, value.length-1));
}
});
また、私は でいくつかの問題を経験したkeydown
ので、 で行いkeyup
ます。
デモ: http://jsfiddle.net/elclanrs/QjVGV/ (ドット.
またはセミコロンを入力してみてください;
)