2012-04-24 61 views
23

Con el uso de la validación de jQuery plugin, intento, bueno, validar mi formulario. Cuando se aprueba la validación, quiero que un javascript se active con los valores del formulario y luego se detenga. no se envía un formulario real con la navegación a un sitio nuevo/mismo.jquery validation: evitar el envío de formularios

¿Esto es posible con la validación jquery?

Respuesta

40

Usted puede probar esto (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

Llegó a la página con un problema similar. 'var isvalidate = $ (" # myform "). valid();' era exactamente lo que estaba buscando. Gracias +1 –

+0

@ Adam, De nada :-) –

+0

Extraño, en mi caso, 'valid()' devuelve falso pero no puedo detener el formulario submit con 'return false' o' e.preventDefault() 'o incluso ¡ambos! – JacobIRR

9

Sí:

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

Hay un método llamado .valid(), que devuelve true en caso de que no hay errores en que se forman, para que pueda validar primero con esto y luego enviar el formulario aquí está la documentación

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

+4

Por alguna razón, esto parece siempre devolver 'verdadero' para mí. – tirdadc

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