Correction problème double click
2005-12-14 #qc
Certains utilisateurs cliquent plusieurs fois sur le bouton [OK] (à cause d'un problème de souris ou parce qu'ils ont l'habitude de double-cliquer pour valider). Lorsque l'on ne teste pas si les données saisies sont uniques (cas des messages d'un forum par exemple), cela conduit à créer deux enregistrements au lieu d'un.
Pour contourner ce problème, le bouton de validation est caché via l'évènement client "onclick". Et pour éviter de mettre à jour les boutons de chaque formulaire, la modification est gérée de façon globale au niveau de l'évènement serveur "Render" de default.aspx.cs :
protected override void Render(HtmlTextWriter output) {
// Get normal html ouput
StringBuilder stringBuilder = new StringBuilder();
StringWriter stringWriter = new StringWriter(stringBuilder);
HtmlTextWriter htmlWriter = new HtmlTextWriter(stringWriter);
base.Render(htmlWriter);
string html = stringBuilder.ToString();
// Enhance submit buttons
string onclick1 = "\"if (typeof(Page_ClientValidate) == 'function') Page_ClientValidate();";
string onclick2 = "\"this.style.display='none';";
html = html.Replace("onclick=" + onclick1, "onclick=" + onclick2 + onclick1.Substring(1));
// Render updated html
output.Write(html);
}
Note: La modification de default.aspx.cs est suffisante étant donné qu'il s'agit de la seule "vrai" page de Quick-Content et que toutes les autres pages ne sont que de l'url rewriting.
Voir aussi : Comment résoudre le problème du "double-clic" en asp.net