Javascript 如何使用jQuery只允许定义的字符作为输入?
如何在jQuery中允许特殊字符,如连字符、逗号、斜杠、空格键、退格键、删除键以及字母数字值,并限制其余字符 由于此标准(允许的字符/输入值)因字段而异,我希望将其作为一种实用方法,接受输入字段id和允许的字符作为参数。Javascript 如何使用jQuery只允许定义的字符作为输入?,javascript,jquery,Javascript,Jquery,如何在jQuery中允许特殊字符,如连字符、逗号、斜杠、空格键、退格键、删除键以及字母数字值,并限制其余字符 由于此标准(允许的字符/输入值)因字段而异,我希望将其作为一种实用方法,接受输入字段id和允许的字符作为参数。 例如:限制字符(textid、pattern)您只需在keydown上检查keyCode,然后运行preventDefault(),如果匹配: $('input').keydown(function(e) { if (e.which == 8) { // 8 is b
例如:限制字符(textid、pattern)您只需在
keydown
上检查keyCode,然后运行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']);
您只需在
keydown
上检查keyCode,然后运行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;
});
});
}
jQuery.fn.forceNumeric=函数(){
返回此。每个(函数(){
$(此).keydown(函数(e){
var key=e.which | e.keyCode;
如果(!e.shiftKey&&!e.altKey&&!e.ctrlKey&&
//数字
key>=48&&key=96&&key我做了类似的事情,但是使用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;
});
});
}
jQuery.fn.forceNumeric=函数(){
返回此。每个(函数(){
$(此).keydown(函数(e){
var key=e.which | e.keyCode;
如果(!e.shiftKey&&!e.altKey&&!e.ctrlKey&&
//数字
key>=48&&key=96&&key我建议对修改键(如backspace和delete)使用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
时遇到了一些问题,所以我会在keydup
上进行操作
演示:(尝试键入点
或分号;
)我建议对修改键(如backspace和delete)使用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
时遇到了一些问题,所以我会在keydup
上进行操作
演示:(尝试键入点
或分号;
)您有任何尝试的代码示例吗?谢谢大家的帮助…现在我需要比较非英语字符…例如Azhari..如何使用模式匹配?基本上我的应用程序应该支持英语和Azhari字符..我很惊讶。请帮助我…您有任何尝试的代码示例吗?比谢谢大家的帮助…现在我需要比较非英语字符..例如Azhari..我如何使用模式匹配?基本上我的应用程序应该支持英语和Azhari字符..这里我很震惊。请帮我解决…如果您按住
键,则失败如果您按住
键,则失败此操作snt不适用于某些字符,例如0和/等,但它是一个很好的限制字母和数字的函数。这不适用于某些字符,例如0和/等,但它是一个很好的限制字母和数字的函数。