Несколько кнопок в форме, после нажатия одной из которых, как выбрать другую в качестве ASP.NET - PullRequest
1 голос
/ 27 мая 2010

У меня есть форма ASP.NET, в которой есть окно поиска и кнопка «Перейти». Когда вы впервые заходите на страницу и вводите результаты поиска, вы можете нажать Enter, чтобы нажать кнопку «Перейти». Затем, когда представлен список результатов, вы нажимаете другую кнопку, чтобы отметить выбранный результат для использования. Затем я позволяю пользователю повторить содержание своего Харта, чтобы выбрать несколько результатов. Однако 2-й + раз, когда вы вводите поисковый запрос и нажимаете его, нажимает кнопку вместо кнопки. В браузере (IE7 +) видно, что кнопка выбрана независимо от того, что вы вводите в поле поиска. Как я могу вернуть его так, чтобы после любого нажатия кнопки он выбирал кнопку по умолчанию?

Я пытался использовать btnGo.Focus () в кнопке onClick, но это не имеет никакого эффекта.

Ответы [ 3 ]

2 голосов
/ 27 мая 2010

Вы можете сделать пару вещей.

  1. Установите для свойства DefaultButton формы идентификатор вашей кнопки поиска. Это может работать в нескольких ситуациях, но у многих людей возникают проблемы, особенно со сложными или динамическими формами. Попробуйте, самое простое - лучшее.

    <form runat="server" DefaultButton="btnSearch"> ....
    
  2. Добавьте обработчик javascript к соответствующему текстовому полю, чтобы независимо от структуры страницы он всегда нажимал кнопку поиска при нажатии клавиши ввода. Самый простой способ сделать это - использовать jQuery:

    $("#myTextBox").keydown(function(e) {
      if (e.keyCode == 13)
      {
         __doPostBack('" + <%= btnSearch.UniqueID + "','')");
      }
    });
    

но вы могли бы сделать нечто подобное в коде, добавив атрибут в текстовое поле:

myTextBox.Attributes.Add("onKeyPress", "if (event.keyCode == 13) ... ")
1 голос
/ 27 мая 2010
<asp:Panel ID="pnl1" runat="server" DefaultButton="ImageButton1">  
    <asp:TextBox ID="TextBox1" runat="server">   
   </asp:TextBox>    
   <asp:Button ID="Button1" runat="server" Text="Submit" />   
   <asp:ImageButton ID="ImageButton1" runat="server" />  
</asp:Panel>

или

http://weblogs.asp.net/jeff/archive/2005/07/26/420618.aspx

0 голосов
/ 27 мая 2010

Это должно работать:

<script language="javascript" type="text/javascript">
  function FocusButton() {
var btn = document.getElementById('<%= btnGo.ClientID %>');
btn.Focus();
  }
</script>

Тогда в вашем поиске текстовое поле

<asp:TextBox ID="SearchTxt" runat="server" onClick="FocusButton">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...