2013-04-28 13 views
34

Chcę uruchomić sprawdzanie poprawności javascript dla niektórych pozycji w polu tekstowym.Działanie formularza HTML i problemy z onsubmitem

Problem polega na tym, że mój formularz ma działanie polegające na przechodzeniu na nową stronę w naszej witrynie, a atrybut onsubmit nigdy nie uruchamia funkcji javascript.

Czy istnieje lepsze rozwiązanie lub takie, które działa z następującym kodem: UWAGA: plik javascript jest poprawnie zapisany i działa po przełączeniu akcji na checkRegistration().

Jest to jedynie problem z uruchomieniem zarówno akcji, jak i javascript.

<form name="registerForm" action="validate.html" onsubmit="checkRegistration()" method="post"> 
    <!-- textboxes here --> 
    <!-- and submit button --> 
</form> 
+0

można udostępnić 'checkRegistration 'jak również –

+0

Działa, po prostu sprawdza, czy pole tekstowe username było emailem i tak i tak. To nie jest kwestia błędów w javascript. –

Odpowiedz

43

Należy przerwać przedstawić procedurę zwrotu false na onsubmit zwrotnego.

<script> 
function checkRegistration(){ 
    if(!form_valid){ 
     alert('Given data is not correct'); 
     return false; 
    } 
    return true; 
} 
</script> 
<form onsubmit="return checkRegistration()"... 

UPDATE:

tutaj już w pełni działający przykład, postać będzie złożyć tylko podczas pisania google na wejściu, w przeciwnym razie nastąpi powrót błędzie:

<script> 
function checkRegistration(){ 
    var form_valid = (document.getElementById('some_input').value == 'google'); 
    if(!form_valid){ 
     alert('Given data is incorrect'); 
     return false; 
    } 
    return true; 
} 
</script> 
<form onsubmit="return checkRegistration()" method="get" action="http://google.com"> 
    Write google to go to google..<br/> 
    <input type="text" id="some_input" value=""/> 
    <input type="submit" value="google it"/> 
</form> 
+0

więc w moim pliku js będę miał, jeśli nie ma błędów -> return true, else false, które nie będą przesyłane i przekierowują do strony hate? Poprawny? –

+1

Niezupełnie. Jeśli zwrócisz prawdziwy formularz, zostanie przesłany, a przeglądarka zażąda. Jeśli zwrócisz fałszywą przeglądarkę zatrzyma się i wszystko jest w twoich rękach, jak sobie z tym poradzić. Najprostszym sposobem jest zgłoszenie problemu sprawdzania poprawności, jak na przykład. – s3m3n

+0

Działa, ale otrzymuję odpowiedź 304, zamiast 200. Jak to spowodowałoby to? –

6

Spróbuj

onsubmit="return checkRegistration()"