我有一个文本框,用户应该只输入字母数字字符,并且应该允许非空格键按下,如退格键,箭头键等。此外,它还适用于所有主流浏览器(如Mozilla Firefox)。
我尝试过一些示例,只允许我输入字母数字字符,但退格不适用于Mozilla Firefox中的以下示例。
$('input').bind('keypress', function (event) {
var regex = new RegExp("^[a-zA-Z0-9]+$");
var key = String.fromCharCode(!event.charCode ? event.which : event.charCode);
if (!regex.test(key)) {
event.preventDefault();
return false;
}
});
答案 0 :(得分:10)
您可以添加[\b]
以匹配并允许退格。
代码:
var regex = new RegExp("^[a-zA-Z0-9\b]+$");
您可以检查按下的键是否在允许键列表中(箭头,home,del,canc),而不是扩展您的正则表达式,如果是,请跳过验证。
这不会阻止用户复制/粘贴不允许的字符。所以也要在blur
事件中执行验证控件(并且始终在服务器端)。
代码:
var keyCode = event.keyCode || event.which
// Don't validate the input if below arrow, delete and backspace keys were pressed
if (keyCode == 8 || (keyCode >= 35 && keyCode <= 40)) { // Left / Up / Right / Down Arrow, Backspace, Delete keys
return;
}
答案 1 :(得分:2)
我正在研究这个问题,这就是我想出的:
var input = $('input[name="whatever"]');
input.bind('keypress', function(e)
{
if ((e.which < 65 || e.which > 122) && (e.which < 48 || e.which > 57))
{
e.preventDefault();
}
});
它只允许数字和字母,包括大写和小写。请注意,它也不允许使用空格键(这是我的应用程序所需的内容)。
答案 2 :(得分:1)
function lettersOnly(evt) {
evt = (evt) ? evt : event;
var charCode = (evt.charCode) ? evt.charCode : ((evt.keyCode) ? evt.keyCode :
((evt.which) ? evt.which : 0));
if (charCode == 8 || charCode == 46 || charCode == 37 || charCode == 39) {
return true;
} else if (charCode > 31 && (charCode < 65 || charCode > 90) && (charCode < 97 || charCode > 122)) {
// alert("Enter letters only.");
return false;
}
return true;
}
答案 3 :(得分:0)
$('.alphanumeric').bind('keypress', function (e) {
var specialKeys = new Array();
specialKeys.push(8); //Backspace
specialKeys.push(9); //Tab
specialKeys.push(46); //Delete
specialKeys.push(36); //Home
specialKeys.push(35); //End
specialKeys.push(37); //Left
specialKeys.push(39); //Right
var keyCode = e.keyCode == 0 ? e.charCode : e.keyCode;
var ret = ((keyCode >= 48 && keyCode <= 57) || (keyCode >= 65 && keyCode <= 90) || (keyCode >= 97 && keyCode <= 122) || (specialKeys.indexOf(e.keyCode) != -1 && e.charCode != e.keyCode));
return ret;
});
此代码也将是Firefox