2016-02-18 10 views
5

UPDATE: moje pytanie jest więcej o How to prevent the form submit if the validation failsJak zatrzymać Forma przedstawienia, jeśli uwierzytelnienie nie powiedzie

link nie rozwiąże mój problem

prostu re-iteracji, co robię: mam formularz z pęczkiem pól wejściowych i gdy użytkownik kliknął przycisk przesyłania, sprawdza poprawność formularza za pomocą atrybutu required="required", jeśli walidacja formularza nie powiedzie się. W takim przypadku chcę przestać przesłać formularz, ponieważ zobaczysz javascript, który pokazuje element div, gdy użytkownik przesyła formularz.

Mam nadzieję, że to się wyjaśni.

END UPDATE

Jak mogę przestać formę przedstawienia na ogień, jeżeli walidacja forma nie powiedzie?

<input class="form-control" data-val="true" id="SerialNumber" name="SerialNumber" required="required" type="text"> 

<button type="submit" name="rsubmit" class="btn btn-success">Submit</button> 

//loading message: 
$("form").submit(function (e) { 
    $("#loading").show(); 
}); 
+0

Spróbuj 'return false;' – m02ph3u5

+0

gdzie należy umieścić 'return false;' –

+2

zobaczyć http://stackoverflow.com/questions/9347282/using-jquery-prevention-forms-from-submitting – m02ph3u5

Odpowiedz

4

I stanie stałym problemem:

najpierw dodać ref na swojej stronie:

<script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/jquery.validate.js"></script> 
<script src="http://ajax.aspnetcdn.com/ajax/mvc/3.0/jquery.validate.unobtrusive.min.js"></script> 

następnie zrobić ten test:

 $("form").submit(function() { 
      if ($(this).valid()) { //<<< I was missing this check 
       $("#loading").show(); 
      } 
     }); 
+0

dlaczego tak skomplikowane? dlaczego używać zarówno jquery.validate, jak i jquery.validate.unobtrusive? – Farside

+0

co masz na myśli przez skomplikowane? masz na myśli, że mogę użyć dowolnego z .js? –

+0

Nie, po prostu nie znam twojego kontekstu, może być potrzebny z jakiegoś powodu. Powiedziałbym, że z podanymi danymi - nie potrzebujesz tego. – Farside

7

Musisz wykonać dwie czynności, jeśli sprawdzanie poprawności nie powiedzie się, e.preventDefault() i zwróci wartość false.

Dla przykładu, z wejściem dany kod pseudo może być następny:

$("form").submit(function (e) { 
    var validationFailed = false; 
    // do your validation here ... 
    if (validationFailed) { 
     e.preventDefault(); 
     return false; 
    } 
}); 
1

Wpisz swój kod weryfikacyjny na onsubmit obsługi swojej postaci jak ten

<form onsubmit="return Validation()"> 
    <input class="form-control" data-val="true" id="SerialNumber" name="SerialNumber" required="required" type="text"> 

    <button type="submit" name="rsubmit" class="btn btn-success">Submit</button> 

    <script> 
     function Validation(){ 
     //Do all your validation here 
     //Return true if validation is successful, false if not successful 
     //It will not submit in case of false. 
     return true or false; 
     } 
    </script> 
</form> 
+1

To nie jest dobre podejście. Musisz uniemożliwić formularz * przesłanie *, a nie kliknięcie przycisku. Jeśli naciśniesz ENTER - formularz zostanie przesłany poza Twoją obsługą. – Farside

+0

Tak, słusznie. Zmieniłem nieco kod, aby rozważyć twoją sprawę. –