2011-12-26 3 views
7

Ho seguente modulo:presentare il modulo dopo jQuery convalida

<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> 

e seguendo JQuery per modulo di presentazione:

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

Ora il problema è che ho anche la validazione dei form codice jQuery

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

Entrambi funzionano bene e la forma fa un popup che avverte che tutti e tre i campi non possono essere vuoti ma la data all'interno del modulo viene comunque inserito nel database. Sto usando il seguente codice per la convalida del modulo http://bassistance.de/jquery-plugins/jquery-plugin-validation/ Quindi la domanda è come aggiungere il primo jquery al secondo, quindi prima verrà eseguito una volta riempiti i campi richiesti?

Spero che qualcuno possa aiutarti. Grazie.

risposta

3

Io non so nulla circa il plugin di convalida, ma normalmente u potrebbe utilizzare questa pace di codice

<script> 

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

Devi fare la tua convalida e poi tornare true/false per la funzione di inviare il modulo. Se il plugin non restituire un valore booleano, si può provare qualcosa di simile:

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

Dal tuo esempio, non mi è chiaro circa il flusso di controllo della pagina, tuttavia, io parto dal presupposto che si sta chiamando il metodo submit() da qualche parte. Dopo aver convalidato il modulo e prima di inviarlo, verificarne la convalida con il metodo valid(). Il codice dovrebbe essere simile a questo:

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

Quando si dice che "è presentata data all'interno forma" il che non ha senso per me, perché nei tuoi frammenti di codice che vedo nulla chiamato "data".

Ho usato il .validate() del plugin ampiamente ... Quello che vi posso dire che può aiutare è che la convalida plugin che si sta utilizzando ha una funzione submitHandler che è possibile utilizzare ...

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

L'submitHandler viene chiamato solo se vengono soddisfatte tutte le regole per la convalida. Vale a dire nel tuo caso ci sono tre campi con "richiesto" su di essi, il che significa che questo modulo NON sarà presentato a meno che tutti e tre i campi non abbiano un valore.

Con ciò, posso dirti con certezza che con le informazioni fornite non c'è nulla che indichi il problema che stai descrivendo. Fornire maggiori e migliori informazioni ci aiuterà a capire cosa c'è che non va.

9

Se si desidera inviare manualmente il modulo, è necessario ignorare l'evento associato a jQuery. È possibile farlo in uno dei seguenti modi:

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

o

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

[0] o ottenere (0) vi dà l'oggetto DOM invece dell'oggetto jQuery.

+1

Grazie per averlo sottolineato ...Stavo cercando questo perché ho un evento legato alla presentazione del modulo ma prima di inviare effettivamente il modulo devo fare una richiesta AJAX e se la condizione è vera invio il modulo e lì ho avuto bisogno del bypass. +1 –