ASPX页面上的onkeydown事件

时间:2013-12-02 21:34:06

标签: javascript asp.net

我正在尝试将一个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以这种方式未定义。任何人都可以帮我这个吗?

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

您正在绑定它时执行该功能。 ------------------- ^ < / p>

您只需将该功能分配给该活动即可。

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

事件类型也应该是“keydown”

您无需担心将事件对象传递给函数,因为它默认传入。

答案 2 :(得分:0)

你想要改变的两件事:

  • 从“onkeydown”删除“on”
  • 无需将“event”传递给“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