2014-01-27 85 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>