Javascript ASPX页面上的onkeydown事件

Javascript ASPX页面上的onkeydown事件,javascript,asp.net,Javascript,Asp.net,我正在尝试向.NET中的aspx页面添加onKeyDown事件。由于我无法访问body标签,我尝试了以下操作: if (window.addEventListener) { window.addEventListener('onkeydown', checkEnter(event), false); } else { window.attachEvent('onkeydown', checkEnter(), false); } function checkEnter(event

我正在尝试向.NET中的aspx页面添加onKeyDown事件。由于我无法访问body标签,我尝试了以下操作:

if (window.addEventListener) {
    window.addEventListener('onkeydown', checkEnter(event), false);
}
else {
    window.attachEvent('onkeydown', checkEnter(), false);
}

function checkEnter(event) {
    if (event.keyCode == 13) {
        ShowList();
    }
}

但是,结果表明,该事件没有以这种方式定义。有人能帮我吗?

使用jQuery可以很容易地获得相同的结果

<script type="text/javascript" 
   src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script>
    $(document).keypress(function (e) {
        if (e.which == 13) {
            alert("Enter key is pressed.");
        }
    });
</script>
或用户面板控件的DefaultButton来捕获enter键,如果使用Button控件,这是首选方法


第一个错误是绑定事件的方式

            window.addEventListener('onkeydown', checkEnter(event), false);
您正在绑定该函数时执行它。-----------^

您只需将函数分配给事件

window.addEventListener'keydown',checkEnter,false

此外,事件类型应为keydown


您不必担心将事件对象传递给函数,因为它在默认情况下是传入的。

您需要更改两件事:

从onkeydown中删除on 无需在事件中传递到checkEnter

    if (window.addEventListener) {
        window.addEventListener('keydown', checkEnter, false);
    }
    else {
        window.attachEvent('keydown', checkEnter, false);
    }

    function checkEnter(event) {
        if (event.keyCode == 13) {
            ShowList();
        }
    }

请参阅:

这样捕获Enter键的原因是什么?@Win使“搜索”功能工作,而不是让用户单击“确定”按钮。@ArtF FWIW您应该检查event.which==13 | | event.keyCode==13如何防止执行它?
    if (window.addEventListener) {
        window.addEventListener('keydown', checkEnter, false);
    }
    else {
        window.attachEvent('keydown', checkEnter, false);
    }

    function checkEnter(event) {
        if (event.keyCode == 13) {
            ShowList();
        }
    }