我使用以下代码只允许a-z,A-z,空格,换行符,标签。
但它不允许使用tab
密钥。
这是我的javascript代码。
// Filter invalid characters in title
$('#p_title').keypress(function (e) {
var regex = new RegExp("^[a-zA-Z0-9 \b\n\r\f\t\v]+$");
var str = String.fromCharCode(!e.charCode ? e.which : e.charCode);
if (regex.test(str)) {
return true;
}
e.preventDefault();
return false;
});
答案 0 :(得分:1)
您需要双重转义所有转义序列以构建RegExp
对象。不管怎样,只需在你的情况下使用正则表达式文字:
var regex = /^[a-zA-Z0-9 \b\n\r\f\t\v]+$/;
完整代码:
$('#p_title').keypress(function (e) {
var regex = /^[a-zA-Z0-9 \b\n\r\f\t\v]+$/;
var str = String.fromCharCode(!e.charCode ? e.which : e.charCode);
if (regex.test(str)) {
return true;
}
e.preventDefault();
return false;
});
答案 1 :(得分:1)
尝试使用.on
代替.keypress
:
http://jsfiddle.net/z9wvfj1e/1/
// Filter invalid characters in title
$('#p_title').on('keydown', function (e) {
if (e.keyCode >=37 && e.keyCode <=40) return true;
var regex = new RegExp("^[a-zA-Z0-9 \b\n\r\f\t\v]+$");
var str = String.fromCharCode(!e.charCode ? e.which : e.charCode);
if (regex.test(str)) {
console.log(e);
return true;
}
e.preventDefault();
return false;
});
答案 2 :(得分:1)
这样的事情就像你需要的一样:
$('#p_title').keypress(function (e) {
return /[a-z]|\s|\r?\n|\t/i.test(String.fromCharCode(e.which));
});
我正在对输入的字符是字母还是空格或换行符或标签进行不区分大小写的检查。
此外,您不需要使用jQuery检查e.charCode
,因为:
event.which属性规范化event.keyCode和event.charCode。建议观看event.which键盘输入键。