Почему ключ ввода `Enter` запускается в Asp.Net - PullRequest
0 голосов
/ 08 апреля 2019

У меня есть страница входа в мое приложение Asp.Net.Я заметил, что когда я нажимаю клавишу Enter в текстовых полях username или 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, но это нетоже не работает.В основном это не удается, потому что идентификатор текстового поля не определен, и я не уверен, как правильно применить решение из примера :

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>

1 Ответ

0 голосов
/ 09 апреля 2019

Мне удалось решить эту проблему с помощью «hiddenButton», который находится выше моего модального Panel.Похоже, это своего рода поведение отправки по умолчанию, исходящее из LinkButton.Мне пришлось установить «DefaultButton =" hiddenButton »» в моей оболочке Form, а не Panel.

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

Затем я отключил «hiddenButton».Я не понимаю, почему нет встроенного метода для отключения этого поведения в элементах управления asp, но этот хак работает.

 <asp:button id="hiddenButton" runat="server" type="button" Enabled="false" style="display:none;" />
...