1

我有以下 jquery 函数,可以避免在输入文本中输入“1”:

<input id="myId" style="width:50%;" value="0" type="text">​

$("#myId").keypress(function(e) {
   var x=e.charCode;
   if (x == '49'){
       e.preventDefault();
   }
});​

这是jsfiddle

这不适用于 IE8。我的错误在哪里?提前致谢!

编辑 JAVASCRIPT 版本

<input id="myId" style="width:50%;" value="0" type="text"  onkeypress="javascript:checkNumber(event);"/>

function checkNumber(event) {
var x=e.which;
if (x == 49){
    event.preventDefault();
}
}
4

3 回答 3

3

charCode不是跨浏览器的,可以使用jQuerywhich属性:

event.which属性归一化event.keyCodeevent.charCode。建议注意event.which键盘按键输入。

var x = e.which;

如果你不使用 jQuery,你可以编写代码:

var x = e.charCode || e.keyCode;
于 2012-11-21T14:25:46.267 回答
0

请参阅此对类似问题的答案。尝试keydown代替keypresskeyCode代替charCode

$("#myId").keydown(function(e) {
   var x=e.keyCode;
   if (x == '49'){
      e.preventDefault();
   }
});​

keypress的jQuery 文档列出了一些使用它的好理由keydown,其中最重要的是它只触发一次按下并按住,并且 keypress 报告字符,而不是键(这在处理大写锁定等问题时会出现问题.)

于 2012-11-21T14:26:18.343 回答
0

请改用e.which,因为e.charCode并非所有浏览器都支持。

此外,您可以考虑使用.keyup()事件而不是.keypress()

于 2012-11-21T14:26:21.480 回答