web-dev-qa-db-fra.com

Page ASP.Net touche entrée provoquant post retour

J'ai une page aspx que postsback quand il ne devrait pas. il y a deux zones de texte, deux zones de liste et deux boutons sur la page. si vous appuyez sur la touche Entrée à n'importe quel moment, le premier bouton est activé et "cliqué", ce qui entraîne une perte de sélection dans les listes déroulantes.

Comment puis-je désactiver ceci? il y a des tonnes de tutoriels sur la façon de capturer le bouton d'entrée et d'exécuter une méthode, mais je pourrais en trouver un sur la façon de désactiver simplement la fonctionnalité "laissez-moi saisir le premier bouton que je trouve et cliquez dessus" mentionnée ci-dessus. 

22
George
  • Vous pouvez définir DefaultButton sur le formulaire ou un panneau. De cette façon, vous avez le plein contrôle de ce qui se passe.
  • Définissez UseSubmitBehavior = "False" sur vos boutons. Cela désactive le "AutoPostback" sur Entrée. 

Je préférerais le second si je voulais empêcher complètement les postbacks sur Enter.

32
Rango

utilisez-vous jQuery?

si c'est le cas:

$(document).keypress(function(e)
{
    if(e.keyCode === 13)
    {
        e.preventDefault();
        return false;
    }
});
24
bevacqua

Utilisez le code ci-dessous pour désactiver la clé d'entrée provoquant la publication. Ce morceau de code bloquera la touche Entrée dans tous les navigateurs 4.0 ci-dessus, sauf si vous appuyez sur Entrée dans une zone de texte ou sur le bouton Envoyer lui-même.

<script language="JavaScript">
var nav = window.Event ? true : false;
if (nav) {
window.captureEvents(Event.KEYDOWN);
window.onkeydown = NetscapeEventHandler_KeyDown;
} else {
document.onkeydown = MicrosoftEventHandler_KeyDown;
}

function NetscapeEventHandler_KeyDown(e) {
if (e.which == 13 && e.target.type != 'textarea' && e.target.type != 'submit') { 
return false; 
}
return true;
}

function MicrosoftEventHandler_KeyDown() {
if (event.keyCode == 13 && event.srcElement.type != 'textarea' && 
event.srcElement.type!= 'submit')
return false;
return true;
}
</script>
7
Priya

Ne mettez ceci que sur votre contrôle ASP.Net TextBox:

<asp:TextBox ID="TextBox1" runat="server"
   onkeydown = "return (event.keyCode!=13);" >
</asp:TextBox>
2
mggSoft

Il s’agit du comportement par défaut d’une application Web. Vous pouvez suivre l’un des didacticiels que vous avez trouvés et masquer ce comportement en abandonnant simplement le processus de soumission.

1
Mitchel Sellers
<body onkeydown = "return (event.keyCode!=13)">
1
amyw