Javascript IE8/IE9/IE11:KeyUp上的文本类型输入:在keycode 13上失去焦点

Javascript IE8/IE9/IE11:KeyUp上的文本类型输入:在keycode 13上失去焦点,javascript,internet-explorer,Javascript,Internet Explorer,下面的代码应该显示按下键的字符代码,包括回车键(13),但在IE中没有。在IE8/IE9/IE11中(可能是IE10,但我现在没有),当我按下回车键时,它会将焦点移动到另一个元素。为什么以及如何解决这个问题?我可以使用onkeydown,但为什么不能像在所有其他浏览器中一样使用onkeydown呢 我应该说,如果我删除按钮元素或输入类型图像,这将不会发生,但很明显,页面将有许多这样的元素 <html> <head> <script type=

下面的代码应该显示按下键的字符代码,包括回车键(13),但在IE中没有。在IE8/IE9/IE11中(可能是IE10,但我现在没有),当我按下回车键时,它会将焦点移动到另一个元素。为什么以及如何解决这个问题?我可以使用onkeydown,但为什么不能像在所有其他浏览器中一样使用onkeydown呢

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

<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>

函数onuserinput(e){
var-keyC=e.keyCode?e.keyCode:e.charCode;
警报(keyC);
}
随机按钮

试试onkeyup,它应该可以工作。据我所知,onuserinput在按下enter键或失去焦点后会触发,因此keyup必须在之前触发。

我也遇到了同样的问题。IE的默认行为似乎是提交“表单”中最近的按钮。要避免这种行为,请将type=“button”与html按钮对应,它对我有效:

<button type='button'>This button will not submit by default</button>
默认情况下,此按钮不会提交

嗯,我使用的是onkeyup…onuserinput没有内置函数,但当onkeyup Firessory读得不好时,我会调用它。是的,您正在使用onkeyup。我能说的是,它必须在IE8上工作,因为我在IE6/8上做过这项工作,并且工作得很好。尝试为所有文档捕获onkeyup,或者仅在输入对象上捕获onkeyup,如果event.target是您的输入,请对其进行处理。只是一个想法。可以肯定的是,当
onkeyup
事件触发时,在IE中取消按enter键的默认行为为时已晚。您必须改用
onkeydown
onkeypress
。基本上,IE只是IE的一部分,其行为方式与其他浏览器不同。