为什么Asp.Net中的“Enter”键启动模式

问题描述 投票:0回答:1

我的Asp.Net应用程序中有一个登录页面。我注意到当我在Enterusername文本框中点击password键时,它会从我的Site.Master页面启动一个模态。我尝试了一些解决方案,包括为我的模态的Panel添加一个默认按钮,以及尝试将UseSubmitBehavior=false应用到启动模态的asp:LinkButton。最后一种方法失败,因为UseSubmitBehavior没有asp:LinkButton。为什么会发生这种情况,我该如何解决?

master.site

  <asp:button id="hiddenButton" runat="server" style="display:none;" />
  <ajaxToolkit:ModalPopupExtender ID="uxReportModal" runat="server" PopupControlID="ReportPanel" TargetControlID="hiddenButton" CancelControlID="btnClose" BackgroundCssClass="modalBackground"> </ajaxToolkit:ModalPopupExtender>
  <asp:Panel ID="ReportPanel" runat="server" CssClass="modalPopupReport" align="center" style="display:none; text-align: left;" DefaultButton="hiddenButton">
  ....
     <div style="text-align:center; margin-bottom: 20px;">
        <asp:Button ID="btnSubmit" runat="server" Text="Submit" onClick="btnSubmit_Click"/>
        <asp:Button ID="btnClose" runat="server" Text="Close" />
     </div>               
  </asp:Panel>

注意:我也尝试添加一个javascript解决方案,但这也不起作用。基本上它失败了因为没有定义文本框ID,我不确定如何正确应用example的解决方案:

LoginPage.aspx

<script>
    uxTextBoxUserName.Attributes.Add("onkeydown", "if(event.which || event.keyCode){if ((event.which == 13) || (event.keyCode == 13)) {document.getElementById('"+Button1.UniqueID+"').click();return false;}} else {return true}; ");
</script>
....
<td class="style2">
  <asp:TextBox ID="uxTextBoxUserName" runat="server" Height="18px" Width="150px"></asp:TextBox>
</td>
asp.net keypress modalpopupextender
1个回答
0
投票

我能够使用高于我的模态Panel的“hiddenButton”来解决这个问题。这似乎是来自LinkButton的某种默认提交行为。我必须在我的表单包装器中设置`DefaultButton =“hiddenButton”',而不是Panel。

<form runat="server" defaultbutton="hiddenButton">

然后,我禁用了“hiddenButton”。我不明白为什么在asp控件中没有内置方法来禁用这种行为,但这个hack有效。

 <asp:button id="hiddenButton" runat="server" type="button" Enabled="false" style="display:none;" />
© www.soinside.com 2019 - 2024. All rights reserved.