2014-01-27 121 views
0

下面的代码应该显示按下的键的charcode,包括输入(13),但它不在IE中。在IE8/IE9/IE11中(可能是IE10,但我现在没有它),当按下Enter键时,它将焦点移到另一个元素上。为什么以及如何解决这个问题?我可以使用onkeydown,但为什么不能在onkeyup以及所有其他浏览器中使用?IE8/IE9/IE11:文本类型输入onkeyup:on keycode 13失去焦点

我应该说这不会发生,如果我删除按钮元素或输入类型的图像,但显然一页会有很多这样的元素。

<html> 
    <head> 
     <script type="text/javascript"> 
      function onuserinput(e) { 
       var keyC = e.keyCode ? e.keyCode : e.charCode; 
       alert(keyC); 
      } 
     </script> 
    </head> 

    <body> 
     <input type="text" id="myinput" onkeyup="onuserinput(event);"/> 
     <input type="image" id="img" src="" alt="random input type image" title=""/> 
     <button id="aaa">random button</button> 
    </body> 
</html> 
+1

很肯定为时已晚,以抑制撞击在IE中输入键的默认行为时'onkeyup'事件火灾。您必须改用'onkeydown'或'onkeypress'。基本上只是IE浏览器,而不是像其他浏览器一样行事。 –

回答

0

尝试onkeyup,它应该工作。据我所知onuserinput按下后输入或失去焦点,所以keyup必须在之前触发。

+0

嗯我使用onkeyup ...没有内置函数onuserinput这就是我所谓的onkeyup火灾时 – MIrrorMirror

+0

对不起,没有很好的阅读。是的,你正在使用onkeyup。我可以说的是,它必须在IE8上工作,因为我已经在IE6/8上完成了这项工作,并且工作正常。尝试为所有文档捕获onkeyup,或仅捕获输入对象,如果event.target是您的输入 - 则处理它。只是一个想法。 –

0

我有同样的问题。 IE默认行为似乎是在“表单”中提交最近的按钮。为了逃避这种行为,包括类型=“按钮” propierty到HTML按钮,它为我工作:

<button type='button'>This button will not submit by default</button>