我如何允許特殊字符,如連字符,逗號,斜槓,空格鍵,退格鍵,刪除鍵以及字母數字值,並在jQuery中限制其餘部分?如何只允許定義的字符作爲使用jQuery的輸入?
由於此標準(允許的字符/輸入值)因字段而異,因此我希望將其作爲接受輸入字段ID和允許的字符作爲參數的實用程序方法。 例如:limitCharacters(文本ID,圖案)
我如何允許特殊字符,如連字符,逗號,斜槓,空格鍵,退格鍵,刪除鍵以及字母數字值,並在jQuery中限制其餘部分?如何只允許定義的字符作爲使用jQuery的輸入?
由於此標準(允許的字符/輸入值)因字段而異,因此我希望將其作爲接受輸入字段ID和允許的字符作爲參數的實用程序方法。 例如:limitCharacters(文本ID,圖案)
您只需檢查的鍵碼,運行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;
});
});
}
我會建議使用組合鍵的大衛解決像退格和刪除這代碼如下字符:
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));
}
});
此外,我遇到了的一些問題,所以我會在keyup
上做。
演示:http://jsfiddle.net/elclanrs/QjVGV/(請嘗試輸入點.
或分號;
)
如果按住'.'鍵,則失敗 – David 2012-08-16 11:57:31
你有你嘗試的任何代碼樣本? – o01 2012-08-16 11:27:01
謝謝大家的幫助...現在我需要比較非英文字符..如Azhari ..我如何做模式匹配?基本上我的應用程序應該支持英文和阿扎裏字符..在這裏我感到震驚。請幫助我... – 2012-08-16 17:32:56