如何阻止数字输入一个可信的元素

时间:2017-02-24 17:34:29

标签: javascript jquery html

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;
            }
});

1 个答案:

答案 0 :(得分:1)

当您似乎使用jQuery时,您可以充分利用API中的isNumeric()函数。

来自documentation

  

$ .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/