输入应该允许数字和短划线字符

时间:2017-09-20 10:57:10

标签: javascript jquery

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

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

它不起作用。它只允许接受数字。

4 个答案:

答案 0 :(得分:1)

试试这个

使用退格支持

更新

允许使用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">

答案 1 :(得分: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 :(得分:1)

在这里,您可以再使用一个解决方案

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

通常合并keyCode来自48 to 57&amp;然后是下一个keyCode条件。

希望这会对你有所帮助。

答案 3 :(得分:0)

  

e.keyCode = 109是&#39; - &#39;在numpad上

     

e.keyCode = 189是&#39; - &#39;在chrome上的alphabate keybord键

     

e.keyCode = 173是&#39; - &#39;在Firefox上的alphabate键盘键和&amp;在chrome 173键盘上是静音开|关

Source

也许这会对你有所帮助,因为只使用e.keyCode == 189(正如一些答案所说)不适用于Firefox。

您可以看到,按键返回的keyCodeLink

编辑:您还可以使用正则表达式。然后,不需要为不同的浏览器添加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