jQuery javascript按键功能无法在IE8上运行

时间:2012-11-21 14:21:36

标签: javascript jquery internet-explorer-8

我有以下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 VERSION

<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();
}
}

3 个答案:

答案 0 :(得分:3)

charCode不是跨浏览器,您可以使用jQuery which属性:

  

event.which属性规范化event.keyCodeevent.charCode。建议观看event.which键盘输入键。

var x = e.which;

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

var x = e.charCode || e.keyCode;

答案 1 :(得分:0)

请参阅this answer一个类似的问题。请尝试使用keydown代替keypresskeyCode代替charCode

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

jQuery documentation for keypress列出了使用keydown的一些充分理由,其中最重要的是它只会触发一次按住,而按键会报告字符,而不是密钥(在处理像Capslock这样的事情时会出现问题。)

答案 2 :(得分:0)

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

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