J'essaie d'empêcher les utilisateurs de double-cliquer sur le bouton de soumission pour une page que je suis en train de mettre à jour. Le problème est qu'il existe une validation côté serveur qui doit être effectuée pour déterminer si l'utilisateur doit effectuer des mises à jour avant de pouvoir passer à autre chose. J'ai actuellement le code suivant sur mon événement de soumission pour mon formulaire.Prévention du double-clic avec la validation côté serveur
<asp:Button ID="SubmitPayment" runat="server" OnClientClick="this.disabled='true';" UseSubmitBehavior="false" OnClick="SubmitPayment_Click" Text="Submit" />
Lorsque cela devient un problème, c'est que la page ne passe pas la validation. Dans ce cas, tout ce que j'ai essayé d'activer le bouton a échoué. Il est difficile pour eux de renvoyer des informations corrigées avec le bouton d'envoi désactivé. J'ai essayé les deux méthodes suivantes à la fin de ma validation pour le réactiver.
SubmitPayment.Enabled = true;
SubmitPayment.Attributes.Add("disabled", "false);
Que dois-je faire pour réactiver ce contrôle? C'est dans Visual Studio 2005. Merci d'avance.
-edit- L'approche que j'ai utilisée était la suivante. J'ai ajouté un bouton de leurre supplémentaire qui était désactivé et la propriété css de l'affichage était définie sur none. J'ai alors utilisé javascript qui cacherait le bouton de soumission et montrerait le bouton de leurre dans l'événement OnClientClick. Enfin, la fin de la méthode côté serveur mettrait à jour les propriétés css sur les boutons pour les masquer et les afficher ensuite.
Les segments de code sont les suivants. Merci encore pour l'aide
function PreventDoubleClick()
{
var sp = document.getElementById("SubmitPayment");
var db = document.getElementById("DecoyButton");
sp.style.display = "none";
db.style.display = "inline";
}
<asp:Button ID="SubmitPayment" runat="server" OnClientClick="javascript:PreventDoubleClick();" UseSubmitBehavior="false" OnClick="SubmitPayment_Click" Text="Submit" />
<asp:Button ID="DecoyButton" Enabled="false" runat="server" style="display:none;" Text="Please Wait..."/>
DecoyButton.Style.Add("display", "none");
SubmitPayment.Style.Add("display", "inline");
So SubmitPayment.Attributes.Add ("disabled", "true"); ou SubmitPayment.Attributes.Remove ("disabled", "false"); ne fait pas le travail? Vous avez un problème étrange. Que faire des crétins qui double-cliquent sur tout (certes, ce n'est pas leur faute mais la faute des concepteurs d'interface de bureau). – mcandre