Mam formularz z 2 przyciskami
<a href="index.html"><button>Cancel changes</button></a>
<button type="submit">Submit</button>
Używam na nich również przycisku jQuery UI, po prostu tak
$('button').button();
Jednak pierwszy przycisk również przesyła formularz. Myślałbym, że gdyby nie miał type="submit"
, nie zrobiłby tego.
Oczywiście mógłbym to zrobić
$('button[type!=submit]').click(function(event) { event.stopPropagation(); });
Ale czy jest jakiś sposób, aby powstrzymać ten przycisk powrotu przed przesłaniem formularza bez interwencji JavaScript?
Szczerze mówiąc, użyłem tylko przycisku, aby móc stylizować go za pomocą interfejsu użytkownika jQuery. Próbowałem wywołać button()
link i nie działało to zgodnie z oczekiwaniami (wyglądało dość brzydko!).
<button type="button">
dla tego, który nie przesyła formularza i<input type="submit">
dla drugiego. Następnie złap go za pomocą jquery$('#formID').submit(function(e){});
Odpowiedzi:
Domyślna wartość
type
atrybutubutton
elementów to „prześlij”. Ustaw go, abytype="button"
wyświetlał przycisk, który nie przesyła formularza.Słowami standardu HTML : „Nic nie robi”.
źródło
button
Elementem ma typ domyślnysubmit
.Możesz sprawić, że nic nie zrobisz, ustawiając typ
button
:źródło
Po prostu użyj starego dobrego HTML:
Jeśli chcesz, zapakuj go jako temat linku:
Lub jeśli zdecydujesz, że chcesz, aby javascript zapewniał inne funkcje:
źródło
<input type="button" />
Button
to kontener w HTML. To pozwala ci umieszczać takie rzeczy jak obrazy lub tabele (nie jestem pewien, dlaczego to zrobiłeś, ale możesz) itp., Podczas gdyinput
nie obsługuje tego. Istnieje różnica między nimi, a każda z nich ma odpowiedni przypadek użycia.źródło
Szczerze, podobają mi się inne odpowiedzi. Łatwo i nie trzeba wchodzić do JS. Ale zauważyłem, że pytasz o jQuery. Tak więc ze względu na kompletność, w jQuery, jeśli zwrócisz false za pomocą procedury obsługi .click (), spowoduje to zanegowanie domyślnej akcji widgetu.
Zobacz tutaj przykład (i więcej gadżetów). Oto także dokumentacja .
w skrócie, z przykładowym kodem, wykonaj następujące czynności:
Dodatkową korzyścią jest to, że możesz pozbyć się tagu kotwicy i po prostu użyć przycisku.
źródło
e.preventDefault()
nie powoduje zatrzymania przesyłania (tam, gdzie zaczyna sięfunction(e)
).Bez ustawiania
type
atrybutu można również powrócićfalse
z programuOnClick
obsługi i zadeklarowaćonclick
atrybut jakoonclick="return onBtnClick(event)"
.źródło
Tak, możesz sprawić, że przycisk nie prześle formularza, dodając atrybut typu wartość przycisku:
<button type="button"><button>
źródło
źródło