OnclientClick et OnClick n'est pas de travailler en même temps?
J'ai un bouton comme les suivantes,
<asp:Button ID="pagerLeftButton" runat="server" OnClientClick="disable(this)" onclick="pager_Left_Click" Text="<" />
Lorsque j'utilise mon bouton comme ça, onclick n'est pas à la cuisson. Quand j'enlève OnClientClick, puis onclick est tir.
Ce que je dois faire est de désactiver le bouton lors de la publication et de l'activer après la publication se termine.
Edit: informations Supplémentaires:
J'ai ajouté un point de rupture à mes fonctions de cuisson est c# part, et je suis le débogage, ils ne sont pas de tir pour vous. Ces fonctions sont comme
protected void pager_Left_Click(object sender, EventArgs e)
{
//Do smthing.
}
protected void pager_Right_Click(object sender, EventArgs e)
{
//Do smthing.
}
et quand je clique sur mon bouton, il est désactivé pendant 1-2 secondes et automatiquement activé, mais je ne suis pas sûr pourquoi elle est activée. Je n'ai pas d'ajouter un produit pour qu'il soit à nouveau activé.
- Pouvez-vous nous montrer votre
disable
fonction? - Vous pouvez poster votre désactiver() méthode Javascript?
- quel est le désactiver js fonction? Lorsque vous appelez désactiver(ce)...je suis en supposant que ses habituels mais vous voulez vous assurer
- la fonction désactiver(contrôle) { contrôle.disabled="disabled"; alert(100); }
Vous devez vous connecter pour publier un commentaire.
De cette l'article sur web.archive.org :
UseSubmitBehavior="false"
)<asp:Button ID="btn" runat="server" Text="Button" OnClientClick="if (confirm('Are you sure you want to proceed?')){ this.disabled = true; this.value = 'Processing Request...';} else {return false;}" UseSubmitBehavior="false" OnClick="btn_Click" CausesValidation="False" />
OnClientClick semble être très pointilleux quand il est utilisé avec OnClick.
J'ai essayé, sans succès, avec les cas d'utilisation suivants:
Mais ils n'ont pas de travail. La suite travaillé:
SyntaxError: Unexpected token if
ne devrais pas y être unjavascript
protocole sur le devant de qui?return true
sur le succès de la validation autrement OnClick avec ne pas être frappé.Webforms
les débutants 🙂 merci GarryVinay (ci-dessus) a donné un travail efficace autour. Ce qui est réellement la cause de l'événement OnClick du bouton ne fonctionne pas à la suite de la OnClientClick fonction d'événement, c'est que MS a défini à l'endroit, une fois que le bouton est désactivé (dans la fonction appelée par le OnClientClick de l'événement), le bouton "honneurs" cela en ne cherchant pas à remplir le bouton de l'activité par l'appel de l'événement OnClick de la méthode définie.
J'ai lutté plusieurs heures à essayer de comprendre cela. Une fois que j'ai retiré la déclaration de désactiver le bouton "soumettre" (qui était à l'intérieur de la OnClientClick fonction), le OnClick méthode a été appelée avec aucun autre problème.
Microsoft, si vous êtes à l'écoute, une fois que le bouton est cliqué, il devrait terminer affectés à l'activité, même si elle est désactivée, une partie du chemin par le biais de cette activité. Tant qu'il n'est pas désactivé lorsqu'il est cliqué, il doit effectuer toutes les méthodes.
Il y a deux problèmes ici:
Désactivation du bouton sur le côté client empêche la publication
Pour surmonter ce problème, désactivez le bouton après le JavaScript
onclick
événement. Un moyen facile de faire cela est d'utilisersetTimeout
comme suggéré par cette réponse.Aussi, le
OnClientClick
code s'exécute même si ASP.NET la validation échoue, alors il est probablement une bonne idée d'ajouter une case pourPage_IsValid
. Cela garantit que le bouton ne sera pas désactivée si la validation échoue.C'est plus lisible pour mettre tout ce code JavaScript dans sa propre fonction que la question montre:
Désactivation du bouton sur le côté client n'a pas le désactiver sur le côté serveur
Pour surmonter ce problème, désactivez le bouton sur le côté serveur. Par exemple, dans le
OnClick
gestionnaire d'événement:Enfin, gardez à l'esprit que d'éviter la duplication appuie sur un bouton qui n'empêche pas deux différents utilisateurs de soumettre les mêmes données en même temps. Assurez-vous de tenir compte de cela sur le côté serveur.
Que faire si vous n'avez pas immédiatement le bouton désactivé, mais le retard qu'à travers setTimeout?
Votre désactiver la fonction serait de retour et de le soumettre continuerait.
Votre JavaScript est très bien, sauf si vous avez d'autres scripts en cours d'exécution sur cette page qui peut corrompre tout. Vous pouvez le vérifier à l'aide de Firebug.
J'ai testé un peu et il semble vraiment que ASP.net ignore désactivé des contrôles. Fondamentalement, la publication est émis, mais probablement le cadre ignore de tels événements, car il "suppose" qu'un bouton désactivé ne peut pas augmenter tout de publication et de sorte qu'il ignore probablement attaché gestionnaires. Maintenant, c'est juste mon raisonnement, on pourrait utiliser un Réflecteur pour vérifier ce point plus en profondeur.
Comme une solution qu'on pourrait essayer de faire la désactivation à un moment plus tard, fondamentalement, vous retarder la
control.disabled = "disabled"
appel à l'aide d'un JavaTimer ou d'autres fonctionnalités. De cette façon, 1er de la publication sur le serveur est délivré avant le contrôle est désactivé par la fonction JavaScript. N'ai pas tester, mais il pourrait travaillerfonction UpdateClick(btn) {