【问题标题】:How to allow all the characters except numbers?如何允许除数字以外的所有字符?
【发布时间】:2019-03-22 21:58:47
【问题描述】:

我想允许除数字之外的所有字符。我在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;
  }
}); 

上面的代码不接受任何东西...请帮忙!!!

【问题讨论】:

  • 为什么不使用正则表达式只允许字符?

标签: javascript jquery


【解决方案1】:

你的条件不对。

您必须测试从 48 到 57 的键码。还要测试从 96 到 105 的键盘数字。

您的原始状况说明:

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

如果键不是退格键 (8)
AND
如果密钥不是...没有密钥代码零!
AND
如果键低于键码 48 高于键码 57 --> 这与您希望的相反!


现在看看下面的 sn-p ;)

$(".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 事件来测试和“防止”键盘按下。

【讨论】:

    【解决方案2】:

    看起来你的 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】:

      尝试以下方法:

      $(".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
      }
      

      【讨论】:

        【解决方案4】:

        参考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">

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2022-09-27
          • 2018-07-15
          • 2017-09-01
          • 1970-01-01
          • 1970-01-01
          • 2015-05-22
          • 1970-01-01
          相关资源
          最近更新 更多