2009-05-20 20 views
25

Come posso allegare un evento click a un pulsante e impedire il postback?jQuery che impedisce il postback al clic del pulsante

Il codice che ho non sembra funzionare.

$('#btnNext').click(function() { 
     return false; 
    }); 
+0

Vai a questa: [Come rimuovere un gestore di eventi] (http://jquery.open2space.com/node/23) E questo: [il modo migliore per rimuovere un gestore di eventi in jquery?] (http://stackoverflow.com/questions/209029/best-way-to-remove-an-event-handler-in- jquery) –

+0

Buona domanda ma manca un esempio comparativo. Poiché gli sviluppatori web oggi usano un approccio misto, è sempre utile fornire un esempio del controllo HTML non solo per assumere il tipo del selettore. – GoldBishop

risposta

54
$('#btnNext').click(function(e) { 
     e.preventDefault(); 
    }); 
+2

Ho notato che questo non funziona a causa del rendering di asp.net. Il mio pulsante viene visualizzato con un "javascript: __ doPostBack (". Qualche idea su come sbarazzarsi di questo? –

+0

Cambia il '$ ('# btnNext')' a questo: '$ ('# <% = btnNext.ClientID% > ') '. Per impostazione predefinita, ASP.Net utilizza la propria denominazione ID ... quindi, utilizzando la proprietà ClientID, è possibile ottenere il nome effettivo di riferimento –

+0

Aggiunta alla risposta di User434917: Encosia ha una buona scrittura su questo [qui ] (http://encosia.com/button-click-handlers-ajax-premature-submission/) - (Button click handlers, AJAX e invio prematuro) – amorin

16

stavo lavorando con un pulsante e ha scoperto che, se si vuole evitare che il pulsante di fare un auto-postback, è necessario specificare il tipo come "pulsante". Per esempio:

<button id="saveButton">Save</button> 

--Questo genereranno un auto-postback (testato in IE)

<button type="button" id="saveButton">Save</button> 

--Questo no

Spero che questo aiuta qualcuno.

+1

Elegante, semplice e non richiede alcun js. Non solo ha risolto il mio problema, ma ha fatto quindi in un modo che non ha gonfiato la mia base di codice. Grazie! –

+0

@JoeWerner il problema è che alcuni sviluppatori usano i controlli ASP invece del grezzo HTML. Alcuni sviluppatori sono pigri, lo so. In entrambi i casi questo funziona solo per coloro che utilizzano HTML non elaborato per creare una pagina Web. – GoldBishop

0

all'interno del tag pulsante, utilizzare type = "Button" per impedire il postback.

2

in Asp.net per evitare page postback sul tasto di scatto uso preventDefault funzione()

<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head runat="server"> 
     <title>WebForm1</title> 
     <script src="js/jquery-2.2.2.js" type="text/javascript"></script> 
     <script> 
      $(document).ready(function() { 
       $("#btnshow").click(function (e) { 
        e.preventDefault(); 
        $("#Label1").show(); 
       }); 
       $("#btnhide").click(function (e) { 
        e.preventDefault(); 
        $("#Label1").hide(); 
       }) 
      }); 
     </script> 
    </head> 
    <body> 
     <form id="form1" runat="server"> 
     <div> 

     </div> 
      <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> 
      <asp:Button ID="btnshow" runat="server" Text="Show" /> 
      <asp:Button ID="btnhide" runat="server" Text="Hide" /> 
     </form> 


    </body> 
    </html> 
+0

Questo è probabilmente il miglior approccio pratico, poiché riguarda direttamente il dilemma .Net. In alcuni scenari, dovresti anche gestire l'assegnazione dell'ID di controllo dinamico, in attesa dell'ambiente. – GoldBishop

Problemi correlati