1 votes

Plusieurs boutons sur un formulaire, après avoir cliqué sur l'un d'entre eux, comment sélectionner l'autre comme valeur par défaut en ASP.NET ?

J'ai un formulaire ASP.NET qui comporte un champ de recherche, avec un bouton "Go". Lorsque vous visitez la page pour la première fois et que vous tapez la recherche, vous pouvez appuyer sur Entrée pour cliquer sur le bouton Aller. Ensuite, lorsque la liste des résultats est présentée, vous cliquez sur un autre bouton pour marquer le résultat sélectionné en vue de son utilisation. Ensuite, je permets à l'utilisateur de répéter à l'envi pour sélectionner plusieurs résultats. Cependant, au moins la deuxième fois que vous saisissez une requête de recherche et que vous appuyez sur la touche Entrée, vous cliquez sur le bouton au lieu du bouton. Vous pouvez voir dans le navigateur (IE7+) que le bouton est sélectionné même si vous tapez dans le champ de recherche. Comment puis-je faire en sorte qu'après chaque pression sur un bouton, le bouton soit sélectionné par défaut ?

J'ai essayé d'utiliser btnGo.Focus() dans le onClick du bouton mais cela n'a aucun effet.

2voto

womp Points 71924

Vous pouvez faire deux choses.

  1. Définissez le DefaultButton du formulaire à l'ID de votre bouton de recherche. Cela peut fonctionner dans quelques situations, mais beaucoup de gens ont des problèmes avec cela, surtout avec des formulaires complexes ou dynamiques. Essayez, le plus simple est le mieux.

    <form runat="server" DefaultButton="btnSearch"> ....
  2. Ajoutez un gestionnaire javascript à la zone de texte en question, de telle sorte que, quelle que soit la structure de la page, il clique toujours sur le bouton de recherche lorsqu'il appuie sur la touche Entrée. Le moyen le plus simple de le faire est d'utiliser jQuery :

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

mais vous pourriez faire quelque chose de similaire dans le codebehind en ajoutant un attribut à la zone de texte :

myTextBox.Attributes.Add("onKeyPress", "if (event.keyCode == 13) ... ")

1voto

Mike Points 943
<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>

ou

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

0voto

alejandrobog Points 1499

Cela devrait fonctionner :

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

Ensuite, dans votre champ de recherche

<asp:TextBox ID="SearchTxt" runat="server" onClick="FocusButton">

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X