Définir quel bouton sera activé lors de l'appui sur la Enter en ASP.Net
Par Wookai le vendredi 7 mars 2008, 16:57 - Code - Lien permanent
Si, dans une page ASP.NET, vous avez plusieurs formulaire qui cohabitent, vous avez peut-être remarqué que le fait d'appuyer sur Enter envoie toujours le même, à savoir le premier présent dans la page. Ca peut être assez dérangeant, si par exemple vous avez un formulaire de connexion à votre site situé en-dessous d'un champ de recherche : dans ce cas, lorsque l'utilisateur aura saison son mot de passe et appuyé sur Enter (sur son clavier, donc), ce sera le formulaire de recherche qui sera transmis !
Pour contrôler ce genre de scénarii, ASP.NET met à disposition l'attribut DefaultButton sur les balises <asp:Form> et <asp:Panel>. Elle permet d'indiquer, pour respectivement le formulaire ou le panel concerné, quelle bouton sera activé lors de l'appui sur la touche Enter. Par exemple :
<html>
<body>
<form id="Form2" runat="server">
<asp:Panel ID="Panel1" DefaultButton="Button1" RunAt="server">
<asp:Button ID="Button1" RunAt="server"/>
</asp:Panel>
<asp:Panel ID="Panel2" DefaultButton="Button2" RunAt="server">
<asp:Button ID="Button2" RunAt="server"/>
</asp:Panel>
</form>
</body>
</html>
Et si vous n'avez pas de bouton, mais une balise <asp:Login> que vous voulez activer lors de l'appui sur la touche Enter ? Rien de plus simple, il suffit de donner IdDuForm$LoginButton comme DefaultButton :
<html>
<body>
<form id="Form2" runat="server">
<asp:Panel ID="Panel1" DefaultButton="Login$LoginButton" RunAt="server">
<asp:Login ID="Login1" RunAt="server"/>
</asp:Panel>
</form>
</body>
</html>
Commentaires