【问题标题】:Input should allow numbers and dash character输入应允许数字和破折号字符
【发布时间】:2017-09-20 10:57:09
【问题描述】:

我已经编写了 jquery 以允许输入数字和破折号

$('.no-special-characters').keydown(function(e){  
  if (e.keyCode >= 48 && e.keyCode <= 57 || e.keyCode == 45) {
    return true; 
  }  else {
    return false;
  } 
});

它不相应地工作。它只允许接受数字。

【问题讨论】:

  • 顺便说一句,如果你想控制输入的内容,你应该检查字符而不是键盘事件。因为有一些方法可以在不显式输入的情况下在输入中输入字符,例如在输入中粘贴。

标签: javascript jquery


【解决方案1】:

试试这个代码

$('.no-special-characters').keydown(function(e) {
  if (e.keyCode >= 48 && e.keyCode <= 57 || e.keyCode == 189) {
    return true;
  } else {
    return false;
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input class="no-special-characters">

【讨论】:

    【解决方案2】:

    试试这个

    更新支持退格

    允许189的键码

    $('.no-special-characters').keydown(function(e) {
       var key =  e.keyCode|e.which;
          console.log(key) //check the key value in your console.log
          if (key >= 48 && key <= 57 || key == 45 || key == 189 ||key == 8){
              return true;
            } else {
              return false;
            }
          });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <input class="no-special-characters">

    【讨论】:

    • 它不工作,它也阻止退格
    • 感谢您的回答...有一个问题..它不允许 - 字符...它应该允许 - 字符但不允许 _ 字符
    • 是的。在您的问题numbers and dash - from being 中,您只提到了数字和- 仅此而已。不要提及 spl 字符
    • 请帮助 - 字符
    • 让我们检查我更新的答案。删除 ctrl 和 shift 键验证
    【解决方案3】:

    这里还有一个解决方案

    $('.no-special-characters').keydown(function(e){  
      if ((e.keyCode >= 48 && e.keyCode <= 57) || e.keyCode == 189) {
        return true; 
      } else {
        return false;
      } 
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <input class="no-special-characters" type="text" />

    通常将keyCode48 to 57 组合在一起,然后是下一个keyCode 条件。

    希望这会对你有所帮助。

    【讨论】:

      【解决方案4】:

      e.keyCode = 109 在小键盘上是 '-'

      e.keyCode = 189 是 '-' 在 chrome 上的字母键中

      e.keyCode = 173 是 '-' 在 Firefox 和 chrome 173 上的字母键盘键中是“-”键是静音开|关

      Source

      也许这对您有帮助,因为仅使用 e.keyCode == 189(正如一些答案所说)在 Firefox 中不起作用。

      你可以看到,keyCode 你的按键返回这里:Link

      编辑:您也可以使用正则表达式。那么就不用为不同的浏览器添加keyCodes了:

      $('.no-special-characters').keypress(function(e){  
          var txt = String.fromCharCode(e.which)
          var pattern = /^[0-9\-]+$/;
          if (!(pattern.test(txt) || e.keyCode == 8)){
                  return false;
          }
      })
      

      JSFiddle

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-08-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多