2009-05-21 5 views
3

est-il possible de désactiver le comportement de soumission d'un bouton côté serveur en utilisant Javascript? Note: Je ne veux pas désactiver le bouton, l'utilisateur cliquera sur le bouton mais il ne soumettra/ne recevra aucune valeur du serveur.est-il possible de désactiver le comportement de soumission d'un bouton côté serveur en utilisant Javascript

scénario

:

<asp:Button ID="Button1" runat="server" Text="Submit" onclick="Button1_Click" OnClientClick="Check()" /> 

javascript:

function Check() 
{ 
    var res = confirm(" Are u sure whatYou have selected ") 
    if (res) 
    { 
    alert("yes"); 
    } 
    else { 
    //Here I need to disable the submit behavoiur       
    } 
} 
} 
} 

Répondre

3

que: return false du gestionnaire de clic du bouton Envoyer.

9

Vous devez vous assurer que UseSubmitBehavior est défini sur false dans le balisage, puis vous devez vous assurer que vous renvoyez false avant l'appel du javascript de publication.


Edit:

Vous devez retourner la valeur de votre fonction, dans la fonction retrun vrai si vous voulez un postback et return false si vous ne le faites pas.

<asp:Button ID="Button1" runat="server" Text="Submit" onclick="Button1_Click" 
    OnClientClick="return Check();" UseSubmitBehavior="false" /> 

Javascript:

function Check() 
{ 
    return confirm(" Are u sure whatYou have selected "); 
} 
+1

Avec le code mis à jour affiché, votre réponse répond entièrement à la question +1 – ichiban

1
<input type='submit' onclick='return false;' /> 

Quelque chose comme ça (si ça ne se fait pas d'une manière différente dans asp.net

0
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" > 
<head runat="server"> 
    <title>Untitled Page</title> 
    <script> 
    function dostuff() { 
    alert('hello'); 
    } 
    </script> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     <% =DateTime.Now.ToString() %> 
     <asp:Button ID="Mybutton" runat="server" UseSubmitBehavior="false" Text="Click" 
     OnClientClick="dostuff(); return false;" /> 
    </div> 
    </form> 
</body> 
</html> 
0

Je ne recommanderais pas l'autre. approches car il y a deux problèmes avec eux:

  1. Javascript ne devrait pas être intégré dans HTML. C'est juste une mauvaise forme et c'est une pratique mystérieuse maintenant. Il y a beaucoup de discussions à ce sujet.
  2. Cliquer sur le bouton "Envoyer" n'est pas le seul moyen de soumettre un formulaire. Si l'utilisateur appuie sur le bouton Entrée, vous avez toujours un problème car le gestionnaire onclick ne sera pas du tout déclenché.

Dans votre cas, il vous suffit d'inclure les éléments suivants dans votre else bloc:

document.getElementById("YourFormId").onsubmit = function() { return false; } 

Ainsi, l'événement est sur votre formulaire pas votre bouton et il est un événement onsubmit.

+0

Les réponses étaient mises à jour car elles fonctionnaient La question était liée aux boutons asp.net effectuant un postback surclick Dans ASP.NET, chaque bouton déclaré du côté serveur se comporte comme un bouton d'envoi de formulaire HTML. – ichiban

+0

La question demande clairement t Il utilisateur pour vérifier ses informations avant de soumettre. Cela devrait être géré dans onsubmit plutôt que surclic. Le balisage ne doit pas inclure Javascript ou CSS, que vous utilisiez ASP.NET ou non - ces méthodes sont obscures comme je l'ai mentionné. – aleemb

+0

Les meilleures pratiques sont hors de la fenêtre avec ASP.NET. C'est en soi une mauvaise pratique et vous vous battrez à chaque étape si vous essayez de séparer proprement les préoccupations, ce que je suis d'accord, c'est la façon dont vous devriez pouvoir aller, peu importe ce que vous utilisez. Mais sérieusement les enfants, si vous construisez encore des choses dans ASP.NET, il est temps d'apprendre quelque chose de nouveau ou devenir inemployable pour tout sauf l'héritage. C'était vrai en 2009 aussi sûrement que c'est vrai aujourd'hui car je suis tombé sur ceci en cherchant un moyen de contourner le comportement de postback asp.net qui refuse de mourir dans quelque chose qui a été écrit aussi récemment que 2013. –

0

simplement dire return false, faites-le dans l'événement clic client, qui ne procédera pas à présenter (ou __doPostBack() en asp.net)

0

pour moi en utilisant

OnClientClick = "si (! confirm ('êtes-vous sûr?')) return false; "

au lieu de

1-OnClientClick = "confirmer le retour ('êtes-vous sûr?«)) »

ou

2-OnClientClick = "confirm ('êtes-vous sûr?))"

résolu le problème

<asp:Button UseSubmitBehavior="false" OnClientClick="if (!confirm('are you sure?')) return false;" > 
Questions connexes