2012-04-24 13 views
23

Con l'uso della convalida del plugin jQuery, sto cercando di convalidare il mio modulo. Quando passa la convalida, voglio che un javascript si attivi con i valori del modulo e poi si fermi. nessun invio di moduli effettivo con la navigazione in un nuovo/stesso sito.validazione jquery: impedisci il modulo di invio

è possibile con la convalida jquery?

risposta

40

Si può provare questo (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

È venuto alla pagina con un problema simile. 'var isvalidate = $ (" # myform "). valid();' era esattamente quello che stavo cercando. Grazie +1 –

+0

@Adam, Prego :-) –

+0

Stranamente, nel mio caso, 'valid()' sta restituendo false ma non posso fermare il modulo submit con 'return false' o' e.preventDefault() 'o anche entrambi! – JacobIRR

9

Sì:

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

C'è un metodo chiamato .valid(), che restituisce true nel caso in cui la non ci sono errori di si formano, in modo da poter convalidare prima con questo e poi inviare il modulo qui è la documentazione

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

+4

Per qualche motivo questo sembra restituire sempre "true" per me. – tirdadc

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