2010-08-12 14 views
18

J'ai une zone de texte et de nombreux boutons. Lorsque l'utilisateur est dans une zone de texte et appuie sur la touche "Entrée", l'événement de clic sur un bouton spécifique est déclenché. J'ai lu sur Internet qu'il y a quelques problèmes avec la touche "entrée" et j'ai essayé quelques solutions mais toujours il entre toujours cet événement de bouton (ce bouton est le premier bouton dans la page).entrer la clé dans asp.net tirant le mauvais bouton

J'ai essayé de créer un bouton qui ne fait rien et écrit ceci dans le page_load:

idTextBoxFA.Attributes.Add("onkeydown","if(event.which || event.keyCode){if ((event.which == 13) || (event.keyCode == 13)) {document.getElementBtId('" + noEnterButton.UniqueID + "').click();return false;}} else {return true}; "); 

Tous mes contrôles de page sont sous une forme et moi avons essayé de donner la forme « defaultButton » propriété à ce bouton j'ai créé. Cela n'a pas fonctionné non plus.

Une idée pourquoi cela ne fonctionne pas et qu'est-ce que je fais mal?

+0

double possible de [comment définir un défaut 'enter' sur un certain bouton] (http://stackoverflow.com/questions/7638119/comment-définir-un-défaut-entrer-sur-un-certain-bouton) –

+0

Le mien est plus tôt;) –

+0

Les deux questions sont si semblables que je ne savais pas lequel signaler. La tendance de StackOverflow est de choisir la question la plus claire et mieux formatée, pas celle qui a été publiée en premier. Dans ce cas cependant, même le phrasé était assez similaire, alors je suis allé avec la question la plus populaire et celle qui avait plus de votes. Pardon. –

Répondre

36

La méthode standard dans ASP.NET pour contrôler le bouton d'envoi qui est activé lorsque vous appuyez sur ENTER est d'envelopper les commandes et les boutons dans un asp: Panel avec la propriété DefaultButton réglé sur le bon bouton. Si je lis correctement votre question, vous voulez juste qu'un bouton spécifique soit activé lorsque vous appuyez sur ENTRÉE, alors enveloppez tout sur votre page dans un seul panneau asp: Panel.

<asp:Panel id="pnlDefaultButton" runat="server" DefaultButton="btnOK"> 
    <!-- All controls here including: --> 
    <asp:Button id="btnOK" runat="server" Text="OK" /> 
</asp:Panel> 
+0

merci, j'ai trouvé cela vraiment utile :) – iamserious

+0

Qu'en est-il d'asp: Contenu? J'utilise des pages maîtres et n'ai pas de panneau ni de formulaire sur ma page. – Marcel

+0

@Marcel - Je ne suis pas certain de ce que vous voulez dire. L'utilisation de pages maîtres ne change pas beaucoup, sauf si le bouton est dans une section de contenu et les autres parties de la page ailleurs. Dans ce cas, vous pouvez réorganiser votre contenu ou vous lancer dans une solution JavaScript pure. –

7

Aucun panneau n'est nécessaire. Il suffit d'utiliser les éléments suivants:

UseSubmitBehavior="false" 
0

S'il vous plaît utiliser

idTextBoxFA.Attributes.Add("onkeypress", "javascript:var evnt = window.event"; 
if(evnt.keyCode==13) 
{ 
document.getElementById('" + noEnterButton.ClientID + "').click(); 
} 
else{};");