我已经编写了允许输入数字和破折号的jquery
$('.no-special-characters').keydown(function(e){
if (e.keyCode >= 48 && e.keyCode <= 57 || e.keyCode == 45) {
return true;
} else {
return false;
}
});
它不起作用。它只允许接受数字。
答案 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)
在这里,您可以再使用一个解决方案
$('.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;
通常合并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键盘上是静音开|关
也许这会对你有所帮助,因为只使用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;
}
})