2011-12-26 11 views
5

złożyć Mam przycisk przedstawić tak:walidacji na przycisk

<input class="create_button" name="commit" 
     onclick="return validate_activity();" 
     type="submit" value="Save"> 

Okazało się, że przycisk ten będzie zawsze wysłać żądanie do serwera bez względu na validate_activity() Zwraca prawda czy fałsz?

Na czym polega problem?

UPDATE

Właściwie zrobiłem błąd w moim validate_activity(), to sprawia, że ​​myślę, że wrócił fałszywe, ale nie.

+1

można zakładać, co masz na 'validate_activity()'? –

+0

Dobrze, popełniłem błąd w moim validate_activity(). – Rocky

Odpowiedz

10

Spróbuj zrobić to samo bez zwracania, np. onclick="validate_activity();" i sprawdzić, czy funkcja zwraca wartość false w przypadku inwalidztwa

+1

Czy to też zadziała w przypadku przesłania

+0

To nie przeszkodzi nikomu w przesłaniu formularza, np. naciskając Enter w polu wprowadzania danych w tym samym formularzu. – cyanbeam

1

Należy użyć zdarzenia submit formy walidacji ..

<form action="..." method="..." onsubmit="return validate_activity()"> 
    <...> 
    <input class="create_button" name="commit" type="submit" value="Save" /> 
    <...> 
</form> 
2

Chyba problem jest onclick="return validate_activity();" oświadczenie to zwrot zostanie wykonany po kliknięciu przycisk przesyłania (nie zwraca false). Poprawną metodą jest onclick="validate_activity();" i zwrócenie wartości false w funkcji validata_activity, która zatrzyma domyślną akcję przesyłania.

3
<input type="button" name="commit" 
value="Save" 
onclick="validate_activity(myform)" /> 

Wewnątrz Javascript, po sprawdzeniu poprawności, wykonaj form.submit() lub zwróć wartość false.

Mam nadzieję, że to pomoże! To sprawdzi Twój formularz i go prześle. Przesłanie nie powiedzie się, jeśli JavaScript jest wyłączony w Twojej przeglądarce.

jeśli chcesz złożyć postępować, nawet jeśli jest wyłączona obsługa JavaScript w przeglądarce klienta (oznacza brak walidacji ale złoży), następnie

<input type="button" name="commit" 
value="Save" 
onclick="validate_activity(myform);return false;" /> 

Mam nadzieję, że nie walidacja nie powinna uderzyć w ogóle. Ale javascript jest po prostu stroną klienta i mam nadzieję, że i tak będziesz mieć poważne testy poprawności po stronie serwera i wielu, myślę, że ludzie używają go do bardzo podstawowych kontroli w terenie.

2

Jeśli przeprowadzasz sprawdzanie formularzy, a następnie sprawdzasz je na zdarzeniu przycisku onclick, sposób, w jaki próbujesz, nie ma większego sensu, powinieneś użyć go na <form></form>onsumbmit takim wydarzeniu.

<form action="someURL" method="post" onsubmit="return validate_activity();"> 

</form> 
2

Spróbuj tego ...

<form action="...." onsubmit="submitForm()" name="form"> 

<input type="submit" value="Save"> 

</form> 


function submitForm(){ 

    if(validationfails){ 

     return false; 
    } 
    else { 
     document.form.submit(); 
     return true; 
    } 
}