ASP.NET empêche le double-clic

J’ai déjà regardé cela et trouvé le javascript qui fonctionne pour moi avec Google Chrome, Firefox et IE lorsque je le teste, mais il semble aléatoire (ou spécifique au navigateur), il ne fonctionne pas. J’ai besoin d’une solution qui fonctionne.

C’est ce que j’utilise actuellement avec jQuery:

$(document).ready(function () { $("a.Once").one("click", function () { $(this).click(function () { return false; }); }); }); 

J’ajoute la classe “Une fois” aux boutons pour lesquels je veux m’assurer que personne n’a cliqué plus d’une fois. Encore une fois, cela fonctionne toujours correctement pour moi, mais pour certains utilisateurs, cela ne fait rien du tout. Existe-t-il une meilleure solution alternative qui fonctionne toujours?

Mise à jour: Ce sont ASP.NET LinkButtons.

Mise à jour 6/18: J’ai reçu plus d’informations de deux utilisateurs qui continuent à avoir ce problème.

On dit qu’il appuie une fois sur le bouton et que l’écran clignote. Il quitte alors la page pour y revenir et appuie à nouveau sur le bouton, ce qui le fait s’afficher deux fois automatiquement.

L’autre affirme qu’il appuie sur un bouton différent, ce qui entraîne la publication automatique de ce bouton à deux resockets. J’ai regardé le code et il n’y a rien de mal avec ce bouton.

La seule chose à laquelle je peux penser est un problème de cache ou d’appuyer sur le bouton avant que le chargement de la page ne soit terminé. Je n’ai pas été en mesure de reproduire le problème et l’un d’entre eux utilise exactement le navigateur que j’utilise.

S’il s’agit d’une publication de formulaire, vous pouvez désactiver tous les boutons d’envoi lors de l’envoi avec:

$('#someForm').submit(function(){ $('input[type=submit]', this).attr('disabled', 'disabled'); });
$('#someForm').submit(function(){ $('input[type=submit]', this).attr('disabled', 'disabled'); }); 

Ou sont-ils autorisés à cliquer plusieurs fois, mais seulement après un certain temps?

Il y a des scénarios où one () échoue – voir les commentaires sur http://api.jquery.com/one/ Avez-vous une idée si c’est un problème de compatibilité du navigateur avec vos utilisateurs ou si jQuery ne se charge pas?

EDIT: Je viens de découvrir que c’est un lien. dans ce cas essayez

$('#yourClientIdForYourLinkButton').click(function(e) { e.preventDefault(); });
$('#yourClientIdForYourLinkButton').click(function(e) { e.preventDefault(); }); 

ou en utilisant le clientid directement quelque chose comme

$('#<%=linkButton.ClientId%>').click(function(e) { e.preventDefault(); });
$('#<%=linkButton.ClientId%>').click(function(e) { e.preventDefault(); }); 

J’ai essayé de nombreuses options avec JQuery, mais voici comment j’ai résolu après l’écriture d’un code simple en c #:

page .aspx:

Maintenant vous ajoutez ceci à votre code derrière dans Page_Load:

  protected void Page_Load(object sender, EventArgs e) { ClientScriptManager cs = Page.ClientScript; ButtonID.Atsortingbutes.Add("onClick", "this.disabled=true;" + cs.GetPostBackEventReference(ButtonID, "").ToSsortingng()); } 

et la dernière chose:

  protected void ButtonID_Click(object sender, EventArgs e) { System.Threading.Thread.Sleep(5000); //rest of your code } 

J’espère que cela t’aides!

Mise à jour sur le post:

En utilisant JavaScript, vous pouvez arrêter la soumission de formulaire lors d’un événement avec clic du bouton côté client, lorsque cela se produit pour la deuxième fois.

    

Ou vous pouvez le faire dans le backend sur Postback:

 btnSubmit.Atsortingbutes.Add("onclick", " this.disabled = true; " + ClientScript.GetPostBackEventReference(btnSubmit, null) + ";"); 

Vous pouvez masquer le lien existant et placer ensuite du texte qui avertit cet utilisateur du chargement de la page.

 Button  

En outre, envisagez d’append du code côté serveur. Vous ne pouvez jamais compter sur l’activation de JavaScript.

EDIT: Réponse 2.0

Cela dépend vraiment de votre désir ici. Une option consiste à désactiver la balise d’ancrage après avoir cliqué dessus. Cela devrait être quelque chose qui fonctionne sur tous les navigateurs.

Une autre option que j’ai vue utilisée est de cacher l’article en question, comme http://www.ilovecolors.com.ar/avoid-double-click-jquery/ , mais c’est peut-être excessif pour ce que vous tentez.