2012-04-24 14 views
23

Za pomocą walidacji wtyczki jQuery próbuję, dobrze, zweryfikować mój formularz. Po przejściu sprawdzania poprawności chcę, aby javascript wystrzelił z wartościami z formularza, a następnie przestał. brak rzeczywistego przesyłania formularzy z przeglądaniem do nowej/tej samej witryny.sprawdzanie poprawności jQuery: uniemożliwić wysłanie formularza

jest to możliwe z walidacją jquery?

Odpowiedz

40

Możesz spróbować (Example):

$(function(){ 
    $("#myform").validate();  
    $("#myform").on('submit', function(e) { 
     var isvalid = $("#myform").valid(); 
     if (isvalid) { 
      e.preventDefault(); 
      alert(getvalues("myform")); 
     } 
    }); 
}); 

function getvalues(f) 
{ 
    var form=$("#"+f); 
    var str=''; 
    $("input:not('input:submit')", form).each(function(i){ 
     str+='\n'+$(this).prop('name')+': '+$(this).val(); 
    }); 
    return str; 
} 
+1

Przyszedł na stronę z podobnym problemem. 'var isvalidate = $ (" # myform "). valid();' było dokładnie tym, czego szukałem. Dziękujemy +1 –

+0

@Adam, Serdecznie zapraszamy :-) –

+0

Weird, w moim przypadku 'valid()' zwraca false, ale nie mogę zatrzymać formularza przesłać z 'return false' lub' e.preventDefault() 'lub nawet obie! – JacobIRR

9

Tak:

$("form").submit(function(event) { 
    if (somethingIsInvalid) { 
     event.preventDefault(); 
    } 
}); 
6

Jest to metoda zwana Obowiązuje(), która zwraca wartość true w przypadku, gdy nie ma żadnych błędów w ciebie tworzyć, więc można zweryfikować najpierw to, a następnie wysłać formularz tutaj jest dokumentacja

http://docs.jquery.com/Plugins/Validation/valid

+4

Z jakiegoś powodu wydaje się to zawsze zwracać "true" dla mnie. – tirdadc

0
$("#form").validate({ 
    rules: {...}, 
    submitHandler: function(form, event) { 
    event.preventDefault(); 
    alert("Do some stuff..."); 
    //submit via ajax 
    } 
}); 
Powiązane problemy