如何允许除数字以外的所有字符?

时间:2018-10-18 06:27:56

标签: javascript jquery

我想允许除数字以外的所有字符。我在jquery下面写了。

$(".no-numbers").keypress(function(e){
  if (e.which != 8 && e.which != 0 && (e.which < 48 || e.which > 57)) 
  {
    swal({
    title: "",
    text: "Numbers are not allowed"
    });

    return false;
  }
  else
  {
    return true;
  }
}); 

上面的代码不接受任何内容...请帮助!

4 个答案:

答案 0 :(得分:2)

尝试以下操作:

$(".no-numbers").keypress(function(e){
  var key = e.keyCode;
  if (key >= 48 && key <= 57) {
    swal({
    title: "",
    text: "Numbers are not allowed"
    });

    return false;
  }
  else
  {
    return true;
  }
}); 

或者您可以使用正则表达式,例如:

var regex = new RegExp("^[a-zA-Z\s]+$");
var str = String.fromCharCode(!e.charCode ? e.which : e.charCode);
if (regex.test(str)) {
  // do your stuff here
}

答案 1 :(得分:1)

引用How to find out what character key is pressed?;

您可以将按键转换为实际值,然后使用e.preventDefault()忽略输入。

$(".no-numbers").keypress(function(e) {
  var numbers = ['0','1','2','3','4','5','6','7','8','9'];
  var keynum;

  if (window.event) { // IE                    
    keynum = e.keyCode;
  } else if (e.which) { // Netscape/Firefox/Opera                   
    keynum = e.which;
  }

  if (numbers.indexOf(String.fromCharCode(keynum)) > -1) {
    alert("No numbers please.");
    e.preventDefault();
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input class="no-numbers">

答案 2 :(得分:1)

看起来像您的if语句错误

看看这个沙盒https://codesandbox.io/s/91wrqorl7o

if (e.which >= 48 && e.which <= 57) {
  console.log("Not accepted is a  Numbers");
  return false;
} else {
  console.log("Accepted not a number");
  return true;
}

答案 3 :(得分:1)

您的条件是错误的。

您必须测试从48到57的键控代码。还要测试从96到105的键区号。

您的原始情况说明:

(e.which != 8 && e.which != 0 && (e.which < 48 || e.which > 57)) 

如果密钥不是退格键(8)
AND
如果键不是...没有零密码!
AND
如果键在键码48下方在键码57以下->这与您想要的相反!


现在看下面的代码片段;)

$(".no-numbers").keydown(function(e){
  if ( (e.which >= 48 && e.which <= 57) || (e.which >= 96 && e.which <= 105) ){
    swal({
      title: "",
      text: "Numbers are not allowed"
    });

    return false;
  }
  else
  {
    return true;
  }
}); 
<link href="https://cdnjs.cloudflare.com/ajax/libs/limonte-sweetalert2/7.28.5/sweetalert2.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/limonte-sweetalert2/7.28.5/sweetalert2.min.js"></script>

<input class="no-numbers">

旁注...我总是倾向于使用keydown事件(首先触发)来测试和“防止”键盘按下。