8

这个解决方案是针对这个问题Enter提供的,询问如何在输入字段中按下时触发 HTML 按钮。

<input type="text" id="txtSearch" onkeypress="searchKeyPress(event);" />
<input type="button" id="btnSearch" Value="Search" onclick="doSomething();" />

<script>
function searchKeyPress(e)
{
    // look for window.event in case event isn't passed in
    if (typeof e == 'undefined' && window.event) { e = window.event; }
    if (e.keyCode == 13)
    {
        document.getElementById('btnSearch').click();
    }
}
</script>

为什么是if (typeof e == 'undefined' && window.event) { e = window.event; }必需品?它似乎正在检查参数是否没有正确传递,为什么不呢?这与修复浏览器兼容性问题有关吗?

4

1 回答 1

7

因为旧的 IE 版本是一个可怕的可憎之物,它使用全局变量event而不是像任何理智的开发人员会使用的函数参数。

出于同样的原因(oldIE 开发人员疯了),您不能.addEventListener()在 oldIE 中使用,但必须.attachEvent()改用。

编辑:刚刚看到您正在使用内联事件并始终传递该事件。这样,您将始终在函数的第一个参数中拥有一个有效的事件对象。您不需要额外的代码。

于 2013-05-23T19:19:52.990 回答