用“ keyup” vs“ keydown” vs“ keypress”阻止特殊字符

问题描述 投票:0回答:1

我试图不使用正则表达式将文本框输入限制为仅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阻止输入特殊字符?”

jquery events keypress
1个回答
2
投票

keypress没有返回相同的键码。例如,如果将console.log(e.which)添加到该功能并按Backspace键,则不会触发任何事件。但是,如果您按另一个键,它将。另外,按键会检测“ shift +数字”组合作为奇数键码,因此它们在您的函数中返回false。例如,“ shift + 1”返回33,但33应该表示“向上翻页”。

© www.soinside.com 2019 - 2024. All rights reserved.