ASPX页面上的onkeydown事件

onkeydown event on an ASPX page

本文关键字:onkeydown 事件 ASPX      更新时间:2024-02-07

我正在尝试将onKeyDown事件添加到.NET中的aspx页面。由于我无法访问body标记,我尝试了这样做:

if (window.addEventListener) {
    window.addEventListener('onkeydown', checkEnter(event), false);
}
else {
    window.attachEvent('onkeydown', checkEnter(), false);
}
function checkEnter(event) {
    if (event.keyCode == 13) {
        ShowList();
    }
}

然而,event以这种方式被证明是未定义的。有人能帮我吗?

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

            window.addEventListener('onkeydown', checkEnter(event), false);

绑定时您正在执行该函数。------------------^

您只需要将函数分配给事件即可。

window.addEventListener('keydown', checkEnter, false);

此外,事件类型应为"keydown"

您不必担心将事件对象传入函数,因为它是默认传入的。

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

或者使用Panel控件的DefaultButton来捕获回车键,如果使用Button控件,这是一种首选方法。

<asp:Panel runat="server" ID="SearchPanel" DefaultButton="SearchButton">
    <asp:Button runat="server" ID="SearchButton" Text="Search" />
</asp:Panel>

您想要更改的两件事:

  • 从"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();
            }
        }
    

请参阅:https://developer.mozilla.org/en-US/docs/Web/API/EventTarget.addEventListener