J'essaie d'utiliser le contrôle ImageButton pour une exécution du script client uniquement. Je peux spécifier le script côté client pour exécuter à l'aide de la propriété OnClientClick, mais comment puis-je l'arrêter d'essayer de poster chaque fois que l'utilisateur clique-t-il? Il n'y a aucune raison de publier lorsque ce bouton est cliqué. J'ai défini des causesValidation sur false, mais cela ne l'empêche pas de poster. P>
8 Réponses :
<image src="..." onclick="DoYourThing();" />
Ce serait parfait, sauf que ce bouton est construit de manière dynamique sur le côté serveur et doit être un objet .NET.
Vous pouvez toujours avoir un asp: contrôle littéral code> sur votre page, et dans votre code derrière le texte défini de manière dynamique sur celle-ci, c'est-à-dire:
myLiteral.text = " "; code>
Utilisez une commande d'image latérale du serveur à peu près sûr que vous pouvez ajouter le client onclick code> événement à cela. p> p>
Voici une façon dont vous pouvez le faire sans contraction du fonctionnement du post-pack d'autres commandes:
Définissez votre bouton comme ceci: P>
<script type="text/javascript"> function my__doPostBack(eventTarget, eventArgument) { //Just swallow the click without postback of the form } </script>
Le "mon" tour a fonctionné pour moi, mais "retourne faux" à la fin qui m'a fait sentir moins icky
J'ai le même problème ... Stackoverflow.com/questions/25979847/... . Je suis sur le point de tester votre solution maintenant.
Une autre solution serait de définir un postbackurl qui ne fait rien
Je sais que ce problème a déjà été répondu, mais une solution simple consiste à renvoyer false de la méthode HTML OnClick (c'est-à-dire la méthode ASPX OnClientClick) par exemple
<asp:ImageButton ID="ImageNewLink" runat="server" ImageUrl="~/images/Link.gif" OnClientClick="DoYourStuff(); return false;" />
J'aimerais suggérer une option supplémentaire de onclientClick = "retour doyourstuff ();". Puis retournez fausse à l'intérieur de doyournstuff (). De cette façon, Doyourstuff peut retourner vrai ou faux en fonction d'autres facteurs et permettant de supporter toujours le post-plan de certaines conditions.
Si j'ai plusieurs boutons d'une grilleView, la mine ne fonctionne que la première fois et à tout moment après, la fonction ne se déclenche pas.
@TTT C'est ce que j'ai essayé d'abord, mais pour une raison quelconque, cela ne fonctionne pas. Bien que si je place le renvoie false; code> dans le
OnClientClick code> en tant que codeclimber suggéré, cela fonctionne.
Ceci fonctionne bien pour moi:
Utilisez onclientClick code> pour écrire votre script et
postbackurl = "JavaScript: vide (0);" code> pour éviter le post-plan. p>
solution 1 ou
SOLUTION 2 P> protected void Page_Load(object sender, System.EventArgs e)
{
if (this.IsPostBack) {
string eventTarget = this.Request("__EVENTTARGET") == null ? string.Empty : this.Request("__EVENTTARGET");
string eventArgument = this.Request("__EVENTARGUMENT") == null ? string.Empty : this.Request("__EVENTARGUMENT");
}
}
Utilisez OnClientClick pour écrire votre script et postbackurl = "JavaScript: void (0);" Pour éviter le post-plant p>
p>
Toute raison de ne pas utiliser l'événement OnClick d'une balise IMG?
@Bigjason: J'aimerais l'éviter si possible. Ce bouton est profondément complexe et est construit sur le côté serveur.