[JS] Problem ze zdarzeniem onsubmit formularza

0

Witam,

mam problem z formularzem, a konkretnie z obsługą zdarzenia onsubmit.

mam formularz, w którym chcę wykorzystać własny element do wysyłki formularza. I tu się zaczynają schody - formularz wysłany przez standardowy button wywołuje onsubmit, ale już przez mój element nie i formularz od razu przeskakuje do action

<form name="test" onsubmit="return sprawdz();" method="post" action="dalej.php">
.....
<input id="sub" name="sub" type="submit" value="Wyślij"/>                /* działa onsubmit */
<a href="#1" onClick="javascript:document.test.submit()">Wyślij</a>  /* tu już nie działa */

Jak zrobić żeby w obu przypadkach zostało wywołane onsubmit??

0

Onsubmit wprowadzono żeby wykonać dodatkowe operacje zaraz przed wysłaniem ich do serwera - np walidację danych. Jeśli programowo uruchamiasz submit() to możesz programowo wywołać funkcję sprawdź(). Po co chcesz bazować na onsubmit?

<a href="#1" onClick="javascript:if(sprawdz()) document.test.submit()">Wyślij</a> 
0

Jest jeszcze taka możliwość jak wciśnięcie ENTER, mając zaznaczony jakiś input i cały ten śmieszny onClick nic nie daje.

0

@Demonical Monk:
Ale wtedy zadziała onsubmit. Wbrew temu, co zdaje się sugerować @javauser, nie należy tego onsubmit kasować. Niech onsubmit zostanie na formularzu, a onclick na przycisku.

Btw. kod autora wygląda jakby był w XHTML-u, więc nie "onClick", tylko "onclick".

PS. Dla porządku dodam, że warto zastosować rozdzielenie warstw i podpiąć poszczególne zdarzenia w JavaScripcie zamiast wstawiania do HTML-a atrybutów onXXX. Bo teraz mamy pomieszane zachowanie (JS) ze strukturą (HTML). Rozdzielenie warstw w odniesieniu do JavaScriptu jest opisane choćby w książce "Kuloodporny Ajax" Jeremy'ego Keitha.

0
javauser napisał(a)

Jeśli programowo uruchamiasz submit() to możesz programowo wywołać funkcję sprawdź(). Po co chcesz bazować na onsubmit?

Masz rację, coś mnie zaćmiło :)
Dziękuję

1 użytkowników online, w tym zalogowanych: 0, gości: 1