2009-05-20 14 views
25

Jak dołączyć wydarzenie kliknięcia do przycisku i zapobiec odświeżeniu?jQuery zapobieganie odświeżeniu strony po kliknięciu przycisku

Kod, który mam, nie działa.

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

Zobacz to: [Jak usunąć obsługi zdarzeń] (http://jquery.open2space.com/node/23) A to: [najlepszy sposób na usunięcie obsługi zdarzeń w jquery?] (http://stackoverflow.com/questions/209029/best-way-to-remove-an-event-handler-in- jquery) –

+0

Dobre pytanie, ale brakuje mu przykładu porównawczego. Ponieważ twórcy stron internetowych używają obecnie podejścia mieszanego, zawsze dobrze jest podać przykład kontroli HTML, a nie tylko przyjąć typ selektora. – GoldBishop

Odpowiedz

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

Zauważyłem, że to nie działa z powodu renderowania asp.net. Mój przycisk jest renderowany za pomocą "javascript: __ doPostBack" (". Jakieś pomysły, jak się tego pozbyć? –

+0

Zmień' $ ('# btnNext') 'na: $ ('# <% = btnNext.ClientID% > ') '. Domyślnie, ASP.Net używa ich własnego nazewnictwa ... więc przy użyciu właściwości ClientID, można uzyskać rzeczywistą nazwę do odniesienia. –

+0

Dodanie do odpowiedzi User434917: Encosia ma dobry napis na tym [tutaj ] (http://encosia.com/button-click-handlers-ajax-premature-submission/) - (Przyciski obsługi przycisków, AJAX i przedwczesne przesłanie) – amorin

16

Pracowałem z przyciskiem i odkrył, że jeśli chcesz, aby zapobiec przycisk od robienia auto-odświeżenie strony, trzeba określić typ jako „przycisk”. Na przykład:

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

--this wygeneruje automatyczne odświeżenie strony (przetestowane w IE)

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

--this nie będzie

nadzieję, że to pomaga kogoś.

+1

Elegancki, prosty i nie wymaga js. To nie tylko rozwiązało mój problem, ale więc w sposób, który nie nadwerężył mojej bazy kodu. Dzięki! –

+0

@JoeWerner problemem jest to, że niektórzy programiści używają formantów ASP zamiast surowego HTML. Niektórzy twórcy są leniwi, ja wiem. Tak czy inaczej to działa tylko dla tych, którzy używają Raw HTML do zbudowania strony internetowej. – GoldBishop

0

wewnątrz znacznika przycisku, użyj type = "Button", aby uniemożliwić wysyłanie z powrotem.

2

w ASP.NET, aby zapobiec odświeżenie strony kliknij na przycisk Użyj funkcji preventDefault()

<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

Jest to prawdopodobnie najlepsze praktyczne podejście, ponieważ dotyczy bezpośrednio dylematu .Net. W niektórych scenariuszach powinieneś również obsługiwać dynamiczne przydzielanie identyfikatorów, oczekujące na środowisko. – GoldBishop

Powiązane problemy