2011-12-26 16 views
7

Mam następującą postać:przesłać formularz po jQuery walidacji

<form id="form" action="comments.php" method="post"> 
    <ul> 
    <li><div class="formbox_titles">Name</div><input type="text" name="name" class="required comm_input" /></li> 
    <li><div class="formbox_titles">Email</div><input type="text" name="email" class="required comm_input"/></li> 
    <li><div class="formbox_titles">Message</div><textarea name="message" class="required comm_text"></textarea></li> 
    <li><input type="submit" value="Submit"></li> 
    </ul> 
</form> 

i po JQuery składania formularza:

target: '#preview', 
    success: function() { 
    $('#formbox').slideUp('fast'); 
} 

Teraz problemem jest to, że ja też mam walidacja formularza kod JQuery

$().ready(function() { 
    // validate comment form 
    $("#form").validate({ 
    }); 
}); 

Obydwa działają dobrze, a formularz wyświetla komunikat ostrzegawczy, że wszystkie trzy pola nie mogą być puste, ale data w formularzu jest mimo wszystko przesyłany do bazy danych. Im przy użyciu następującego kodu do sprawdzania poprawności formularza http://bassistance.de/jquery-plugins/jquery-plugin-validation/ Tak więc pytanie, jak dodać pierwszy jquery w drugim, więc pierwsze zostaną wykonane po wypełnieniu wymaganych pól?

Mam nadzieję, że ktoś pomoże. Dzięki.

Odpowiedz

3

Nie wiem nic na temat swojej wtyczki walidacji wiem, ale zwykle u może korzystać z tej ciszy kodu

<script> 

    $("form").submit(function() { 
     if (validationIsTrue()) { 
     return true; 
     } 
     else { 
     return false; 
     } 
    }); 
</script> 

Trzeba dokonać walidacji, a następnie powrócić true/false do funkcji złożenia formularza. Jeśli wtyczka nie zwracają wartość bool, można spróbować coś takiego:

$("form").submit(function() { 
    return $(this).validate({ .... }); 
}); 
8

Z Twojego przykład nie jestem jasne o przepływie sterowania swojej stronie, jednak jestem zakładając, że wywołanie metody submit() gdzieś. Po sprawdzeniu poprawności formularza i przed przesłaniem go sprawdź jego sprawdzanie za pomocą metody valid(). Kod powinien wyglądać mniej więcej tak:

$("#form").validate(); 
if ($('#form').valid()) 
    $('#form').submit(); 
2

Kiedy mówisz, że „data wewnątrz formularz jest składany”, że nie ma sensu do mnie, bo w swoich fragmentów kodu widzę nic o nazwie „data”.

Użyłem .validate() wtyczki obszernie ... Co mogę powiedzieć, że może pomóc to, że validate plugin używasz posiada funkcję submitHandler, które można wykorzystać ...

// validate comment form 
$("#form").validate({ 
submitHandler : function(form) { 
    //do something here 
    form.submit(); 
} 
}); 

Metoda submitHandler jest wywoływana tylko wtedy, gdy spełnione są wszystkie reguły sprawdzania poprawności. Mianowicie w twoim przypadku masz trzy pola z "wymagane", co oznacza, że ​​ten formularz NIE zostanie przesłany, chyba że wszystkie trzy pola mają wartość.

Dzięki temu mogę powiedzieć na pewno, że z podanymi informacjami nic nie wskazuje na problem, który opisujesz. Zapewnienie większej ilości lepszych informacji pomoże nam dowiedzieć się, co jest nie tak.

9

Jeśli chcesz ręcznie przesłać formularz, musisz pominąć zdarzenie związane z jQuery. Można to zrobić w jeden z następujących sposobów:

$('#form_id')[0].submit(); 

lub

$('#form_id').get(0).submit(); 

[0] lub get (0) daje obiekt DOM zamiast obiektu jQuery.

+1

Dzięki za wskazanie, że ...Szukałem tego, ponieważ mam zdarzenie związane z przesłaniem formularza, ale zanim faktycznie wyślę formularz, muszę wykonać żądanie AJAX i jeśli warunek jest prawdziwy, przesyłam formularz i tam potrzebuję obejścia. +1 –

Powiązane problemy