J'essaie de désactiver un bouton lorsqu'un utilisateur soumet un formulaire de paiement et que le code pour publier le formulaire provoque un double post dans Firefox. Ce problème ne se produit pas lorsque le code est supprimé et n'apparaît dans aucun navigateur autre que Firefox.Désactiver le bouton après l'envoi
Une idée comment empêcher le double post ici?
System.Text.StringBuilder sb = new StringBuilder();
sb.Append("if (typeof(Page_ClientValidate) == 'function') { ");
sb.Append("if (Page_ClientValidate() == false) { return false; }} ");
sb.Append("this.value = 'Please wait...';");
sb.Append("this.disabled = true;");
sb.Append(Page.GetPostBackEventReference(btnSubmit));
sb.Append(";");
btnSubmit.Attributes.Add("onclick", sb.ToString());
c'est la sb.Append ligne (Page.GetPostBackEventReference (btnSubmit)) qui est l'origine du problème
Merci
EDIT: Voici le C# du bouton:
<asp:Button ID="cmdSubmit" runat="server" Text="Submit" />
Voici le code
Ce code poste deux fois (et désactive le bouton de soumission et vérifie l'entrée):
<input type="submit" name="ctl00$MainContent$cmdSubmit" value="Submit" onclick="if (typeof(Page_ClientValidate) == 'function') { if (Page_ClientValidate() == false) { return false; }} this.value = 'Please wait...';this.disabled = true;document.getElementById('ctl00_MainContent_cmdBack').disabled = true;__doPostBack('ctl00$MainContent$cmdSubmit','');" id="ctl00_MainContent_cmdSubmit" />
Ce code des postes deux fois (mais ne pas désactiver le bouton d'envoi):
<input type="submit" name="ctl00$MainContent$cmdSubmit" value="Submit" onclick="__doPostBack('ctl00$MainContent$cmdSubmit','');" id="ctl00_MainContent_cmdSubmit" />
Ce message de code une fois (mais ne vérifie pas l'entrée d'utilisateur et ne désactive pas la le bouton d'envoi):
<input type="submit" name="ctl00$MainContent$cmdSubmit" value="Submit" id="ctl00_MainContent_cmdSubmit" />
Ce message de code une fois (mais ne désactivez pas le bouton soumettre):
<input type="submit" name="ctl00$MainContent$cmdSubmit" value="Submit" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$MainContent$cmdSubmit", "", true, "", "", false, false))" id="ctl00_MainContent_cmdSubmit" />
Ce code ne publie pas du tout:
<input type="submit" name="ctl00$MainContent$cmdSubmit" value="Submit" onclick="this.disabled = true;WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$MainContent$cmdSubmit", "", true, "", "", false, false))" id="ctl00_MainContent_cmdSubmit" />
De toute évidence, il est la désactivation du bouton d'envoi qui est de poser le problème. Avez-vous des idées sur la façon dont nous pouvons désactiver la soumission pour éviter les clics multiples?
Quand je supprimer cette ligne, il ne présente pas réellement. J'ai ceci attaché au bouton mais il n'appelle jamais cette fonction quand cette ligne n'est pas là: this.btnSubmit.Click + = new EventHandler (btnSumbit_Click); –
Hmm. Pouvez-vous essayer d'ajouter return true; à la fin de votre bloc JavaScript et voir ce qui se passe? –
non .. qui n'a pas aidé. Les boutons sont désactivés et réactivés et rien n'est soumis. –