2012-03-22 22 views
120

Mam formularz HTML, w którym używam kilku przycisków. Problem polega na tym, że niezależnie od tego, który przycisk kliknę, formularz zostanie przesłany, nawet jeśli przycisk nie jest typu "prześlij". na przykład Przyciski takie jak: <button>Click to do something</button>, powodują przesłanie formularza.Wyłącz automatyczne wysyłanie formularza kliknij przycisk

To dość bolesne zrobić e.preventDefault() dla każdego z tych przycisków.

Używam jQuery i jQuery UI, a strona jest w HTML5.

Czy istnieje sposób na wyłączenie tego automatycznego zachowania?

Odpowiedz

277

Przyciski takie jak <button>Click to do something</button> przesłać przyciski.

Ustaw type="button", aby to zmienić. type="submit" jest ustawieniem domyślnym (jako specified by the HTML recommendation).

+5

stracił dzień na sen na próżno ustalające mój kod, bo nie wiedział, ten prosty specyfikacji ! – palerdot

+4

Echo koncepcji palerdota, cieszę się, że znalazłem tę notatkę po szybkim wyszukiwaniu w Google i nie zabiłem godzin. Bardzo wiem, wielkie dzięki. – brooklynsweb

+0

to świetnie wiedzieć! –

5

<button> są w rzeczywistości przyciskami do przesłania, nie mają innych głównych funkcji. Będziesz musiał ustawić przycisk typu na.
Ale jeśli bindujesz program obsługi zdarzeń, jak poniżej, kierujesz wszystkie przyciski i nie musisz tego robić ręcznie dla każdego przycisku!

$('form button').on("click",function(e){ 
    e.preventDefault(); 
}); 
+0

To 'e.preventDefault();'. – hlcs

+0

dzięki, trochę brakowało tego 5 lat temu ;-) –

11

Nie jest trudno zrobić to, co chcesz. Możesz po prostu spróbować użyć return false (return false przesłaniana domyślne zachowanie na każdym elemencie DOM) tak:

myform.onsubmit=function() 
{ 
    //do what you want; 
    return false; 
} 

a następnie przesłać formularz używając myform.submit()

lub alternatywnie:

mybutton.onclick=function() 
{ 
    //do what you want; 
    return false; 
} 

Jednak myślę, że typ wejściowy = "przycisk"/typ przycisku = "przycisk" nie przesyła formularza i można z niego korzystać bez żadnych problemów.

-1

jeśli chcesz dodać bezpośrednio do wejścia jako atrybutu, użyj tego

onclick="return false;" 

<input id = "btnPlay" type="button" onclick="return false;" value="play" /> 

ta forma będzie zapobiegać przedstawić zachowanie ruchowe

Powiązane problemy