Wyłącz formularz Auto wyślij po kliknięciu przycisku

Mam formularz HTML, w którym używam kilku przycisków. Problem polega na tym, że bez względu na to, który przycisk kliknę, formularz zostanie przesłany, nawet jeśli przycisk nie jest typu "wyślij". np. przyciski typu: <button>Click to do something</button>, powodują wysłanie formularza.

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?

Author: Deduplicator, 2012-03-22

4 answers

Przyciski jak <button>Click to do something</button> przyciskami submit.

Ustaw type="button", aby to zmienić. type="submit" jest wartością domyślną (jako określoną w zaleceniu HTML ).

 313
Author: Quentin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-29 11:39:11

Nie jest trudno robić to, co chcesz. Możesz po prostu spróbować użyć return false (return false nadpisuje domyślne zachowanie na każdym elemencie DOM) w następujący sposób:

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

A następnie prześlij formularz za pomocą myform.submit ()

Lub alternatywnie:

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

Jednak myślę, że Input type="button"/Button type = "button" nie prześle twojego formularza i możesz z niego korzystać bez żadnych problemów.

 13
Author: Boris D. Teoharov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-22 15:18:34

<button>'s są w rzeczywistości przyciski submit, nie mają innej głównej funkcjonalności. Musisz ustawić typ na przycisk.
Ale jeśli powiązać obsługę 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();
});
 6
Author: mas-designs,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-12 09:43:30

Jeśli chcesz dodać bezpośrednio do input jako atrybut, użyj tego

 onclick="return false;" 

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

To uniemożliwi zachowanie formularza

 0
Author: blackholeearth0_gmail,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-08 08:18:13