我试图将文本框输入仅限为0-9,而无需使用正则表达式。而且,下面是我的代码:
$("input[type='text']").on('keypress', function(e){
if(e.which>=48 && e.which<58){
return true;
}else{
return false;
}
})
<input type="text">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
我的问题是:"在这种情况下,为什么只有键防止特殊字符的输入?"
keypress
不会返回相同的密钥代码。例如,如果将console.log(e.which)
添加到功能并按下Backspace,则不会发射。但是,如果您按另一个键,它将。另外,Keypress将" Shift Number"组合视为奇数键编码,因此它们在您的功能中返回False。例如," Shift 1"返回33,但33应该表示"页面"。
keyup
不起作用,因为字符是在键盘上呈现的,因此,密钥up为时已晚。(如果没有keydown
,您就无法进行keyup
事件。)
keydown
不能阻止特殊字符,因为这些特殊字符需要键盘/KEUP事件(Shift Plus Number)的组合。因此,即使按下偏移键并返回false,keydown
即使按下数字也会返回真实。为了解决您需要map
的内容,如下所述:在JQuery