2010-12-07 18 views
1

J'ai regardé à travers et n'a trouvé aucune solution propre pour cela. Un de mes collègues a trouvé une solution assez sale mais je ne vois pas pourquoi les solutions dans la référence de liens ci-dessous ne fonctionnent pas quand je le place dans une page maître. J'ai une page principale qui a essentiellement une zone de texte et un bouton de lien, quand j'appuie sur la touche d'entrée, le bouton par défaut pour la page enfant est appelé à la place.LinkButton par défaut lors de l'entrée dans une page maître

  1. http://weblogs.asp.net/jeff/archive/2005/07/26/420618.aspx
  2. set linkbutton as default button for asp:panel in asp.net (Solution de Ahmad)

ANY aperçu sur cette s'il vous plaît? merci :)

Je posterai la solution sale quand je vais travailler demain.

EDIT: voici la solution sale (je pense):

string id = ctlToClick.UniqueID; 
string someJavascript = //see below 
EmailTextBox.Attributes.Add("OnKeyPress", someJavascript); 

Le javascript (placé ici afin StackOverflow peut formater mieux):

javascript:if (window.event){ 
    if(parseInt(window.event.keyCode) == 13){ 
    WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions('" + id + "', '', true, 'Login', '', false, true)); 
    return false; 
    } 
} 

Est-ce vraiment la seule solution pour ce?

+0

Que voulez-vous lorsque vous appuyez sur la touche Entrée? Rediriger vers une page liée? –

Répondre

1

Avez-vous essayé de définir la propriété defaultButton?

<form id="Form1" 
     defaultbutton="lnkNextPage" 
     runat="server"> 

Où est lnkNextPage id du contrôle LinkButton.

+0

Ouais, j'ai essayé ça. Le formulaire se compose de asp: textbox et d'un asp: linkbutton à l'intérieur d'un panel asp: avec la propriété defaultbutton définie sur l'identifiant du linkbutton. – David

+0

"Le DefaultButton de 'Form1' doit être l'ID d'un contrôle de type IButtonControl.", Cela ne fonctionnerait pas – thatsalok

0

Je pense que vous avez besoin d'un simple javascript pour contrôler vos onglets. J'ai couru dans ceci avant un il n'y avait aucun moyen de faire fonctionner la solution de bouton par défaut.

L'idée est simple - vérifiez chaque touche qui est entrée dans la zone de texte. Si la clé saisie est entrée ou tabulation, recherchez le bouton par jquery ou document.GetElementById ('id') et invoquez l'événement click sur le bouton. Le bouton par défaut du formulaire ne fonctionne pas dans asp.net car a): il n'y a qu'un seul formulaire, et b): pour les différentes zones de texte, vous voulez être en mesure de contrôler quel bouton est effectivement cliqué (sur tab/entrer).

Un simple fichier javascript résout ce problème.

<bleepzter/>