asp.net中onkeypress和onkeydown之间的区别

时间:2010-07-16 07:17:18

标签: asp.net

我有一个带有默认按钮设置的表单。所以当我按回车键时,无论焦点如何都会提交表单。我的要求是当焦点位于fileupload控件内并按下enter时,而不是提交表单show browse对话框。所以我创建了一个面板并将onKeyPress事件附加到此面板

 fileUploadDocument.Attributes.Add("onkeyPress", "return ByPassEnter(event);");

<asp:Panel ID="fileUploadDocument" runat="server">
        <div>
            <uc2:FileUploadControl ID="ucdocxUploadControl" runat="server" ErrorMessageNoFileSelected="Please select a file for upload."
                ValidationGroup="BrandLogoFileUpload" />
        </div>
</asp:Panel>



function ByPassEnter(e) {       
       var evt = (e) ? e : window.event;
        var key = (evt.keyCode) ? evt.keyCode : evt.which;
       if (key == 13) {
            document.getElementById('<%=ucdocxUploadControl.BaseFileUploadControl.ClientID %>').click();
            CancelDefault(evt);
        }
    }

    function CancelDefault(e) {        
        e.cancel = true;
        if (e.preventDefault) {
          e.preventDefault();                   
        }
      e.returnValue = false;
    }

当我在文件上传控件上按Enter键时,会显示浏览对话框,当我选择文件或在浏览对话框中点击取消时,会发生回发。 e.returnValue = false应该会阻止回发,但即使这样也会发生回发。

然而,如果我将onkeypress更改为onkeydown,一切正常并且回发不会发生。有人告诉我这些事件的不同以及为什么回发发生在onkeypress上。

1 个答案:

答案 0 :(得分:2)

按下并释放按键后,按键事件将触发。此时,表单的提交操作已激活。

按下之后但在发布之前,keydown会发生火灾。此时,您可以通过注册取消按键。