JSFiddle:https://jsfiddle.net/mqfntbws/
我有一个contenteditable span
我希望阻止用户输入特殊字符或数字。问题是,我能够阻止特殊字符,但它不会对数字起作用。谁知道我做错了什么?
HTML:
<span required="" contenteditable="" placeholder="First Name" aria-required="true"></span>
JS:
$('span[contenteditable]').on('keypress', function (event) {
var regex = new RegExp("^[A-z]+$");
var key = String.fromCharCode(!event.charCode ? event.which : event.charCode);
if (!regex.test(key) && !((event.keyCode>=46 && event.keyCode<=58) || event.keyCode==8 || event.keyCode==9 || (event.keyCode>=37 && e.keyCode<=40))) {
console.log(">>>");
event.preventDefault();
return false;
}
});
答案 0 :(得分:1)
当您似乎使用jQuery时,您可以充分利用API中的isNumeric()
函数。
$ .isNumeric()方法检查其参数是否表示数值。如果是,则返回true。否则返回false。参数可以是任何类型。
因此,使用它会极大地清除您的if
声明。
if(!regex.test(key) || $.isNumeric(key))
离开你:
$('span[contenteditable]').on('keypress', function (event) {
var regex = new RegExp("^[A-z]+$");
var key = String.fromCharCode(event.which);
if (!regex.test(key) || $.isNumeric(key)) {
event.preventDefault();
return false;
}
});
我已经用一个工作示例分叉并更新了你原来的小提琴:https://jsfiddle.net/GH05T/mqfntbws/6/