2009-06-20 6 views
1

J'ai un formulaire asp.net qui a 3 zone de texte et un contrôle de bouton de lien asp.net.Je veux invoquer la méthode de gestionnaire d'événement de clic de bouton lorsque le l'utilisateur appuie sur la touche Entrée. J'ai utilisé le panneau asp.net et sa propriété de bouton par défaut.Il travaille dans IE.Mais pas dans d'autres navigateurs comme firefox etc .. Y at-il une autre méthode pour le faire?ASP.NET: Appeler la méthode codebehind sur Entrée Appuyez sur la touche dans le formulaire

Répondre

2

Vous pouvez essayer le DefaultButton propriété (ASP.Net 2.0 et plus). Les contrôles ASP.Net Form et Panel ont tous deux une propriété DefaultButton. L'action par défaut signifie que la touche d'entrée doit déclencher le clic sur le bouton.

<form id="Form1" defaultbutton="SubmitButton" runat="server"> 
    <asp:panel id="panel1" defaultbutton="anotherbutton" runat="server"> 
    </asp:panel> 
</form> 

Il y a un problème connu FireFox qui peut être résolu en ajoutant: UseSubmitBehavior="False" à votre bouton Envoyer. Cette Blog décrit le problème et la solution dans un UpdatePanel, cela pourrait fonctionner ici aussi.

Vérifiez également ce question qui a des liens vers d'autres solutions possibles.

+0

Est-ce que cela fonctionnera dans les navigateurs Non IE? .J'ai essayé et échoué dans Firefox – Shyju

3

Cela semble être un bug avec FF3 (pas sûr), mais le script qui fixe est donné ci-dessous Gardez à la fin de la page afin qu'elle remplace la méthode WebForm_FireDefaultButton rendu par ASP.NET.

var __defaultFired = false;

fonction WebForm_FireDefaultButton (événement, cible) { var element = événement.target || event.srcElement;

if (!__defaultFired && event.keyCode == 13 && !(element && (element.tagName.toLowerCase() == "textarea"))) { 
    var defaultButton; 

    if (__nonMSDOMBrowser) 
     defaultButton = document.getElementById(target); 
    else 
     defaultButton = document.all[target]; 

    if (defaultButton) { 
     if(typeof(defaultButton.click) != "undefined") 
      defaultButton.click(); 
     else 
      eval(unescape(defaultButton.href.replace("javascript:", ""))); 

     event.cancelBubble = true; 

     if (event.stopPropagation) event.stopPropagation(); 
     return false; 
    } 
} 
return true; 

}

Questions connexes