2010-07-16 5 views
1

J'ai un formulaire avec un jeu de boutons par défaut. Ainsi, lorsque j'appuie sur enter, le formulaire est envoyé quel que soit le focus. Mon exigence est quand le focus est à l'intérieur du contrôle fileupload et que l'on appuie sur enter, au lieu de soumettre le formulaire afficher le dialogue de navigation. J'ai donc créé un groupe spécial et attaché un événement onKeyPress à ce panneauDifférence entre onkeypress et onkeydown dans asp.net

fileUploadDocument.Attributes.Add("onkeyPress", "return ByPassEnter(event);"); 

<asp:Panel ID="fileUploadDocument" runat="server"> 
     <div> 
      <uc2:FileUploadControl ID="ucdocxUploadControl" runat="server" ErrorMessageNoFileSelected="Please select a file for upload." 
       ValidationGroup="BrandLogoFileUpload" /> 
     </div> 
</asp:Panel> 



function ByPassEnter(e) {  
     var evt = (e) ? e : window.event; 
     var key = (evt.keyCode) ? evt.keyCode : evt.which; 
     if (key == 13) { 
      document.getElementById('<%=ucdocxUploadControl.BaseFileUploadControl.ClientID %>').click(); 
      CancelDefault(evt); 
     } 
    } 

    function CancelDefault(e) {   
     e.cancel = true; 
     if (e.preventDefault) { 
      e.preventDefault();     
     } 
     e.returnValue = false; 
    } 

Quand j'appuyez sur Entrée sur le contrôle de fileupload, parcourez boîte de dialogue affiche et lorsque je choisis un fichier ou cliquez sur Abandonner le dialogue Parcourir, postback arrive. e.returnValue = false devrait empêcher la publication, mais même après la publication.

Cependant, si je change onkeypress sur onkeydown, tout fonctionne et la publication ne se produit pas. Quelqu'un peut-il me dire la différence dans ces événements et pourquoi la publication se passe dans onkeypress.

Répondre

2

L'événement de pression de touche se déclenche une fois la touche enfoncée et relâchée. À ce stade, l'action de soumission de votre formulaire est activée.

Le clavier se déclenche après la presse mais avant la publication. À ce moment-là, vous pouvez annuler la frappe de la touche d'enregistrement.

Questions connexes