Tengo una función jQuery vinculada a mi botón de envío como esta:
$(function () { $('#signupform').submit(function () { alert('test'); }); });Sin embargo, se dispara ya sea que el formulario sea válido o no. Mi modelo está decorado con varias anotaciones de datos y la validación del lado del cliente funciona bien, pero solo quiero que se active la función jQuery si el formulario ha sido validado. ¿Cómo logro eso?
EDITAR: Para aclarar, estoy usando MVC DataAnnotations + javascript discreto de jQuery para manejar la validación del lado del cliente. No tengo mis propias rutinas de validación de javascript escritas. La validación de jQuery incorporada está haciendo un gran trabajo al validar el formulario, pero solo necesito saber cómo obtener los resultados de esa validación en un valor booleano dentro de mi propia función.
Si está utilizando jquery validar la validación discreta, podría:
$(function () { $('#signupform').submit(function () { if($(this).valid()) { alert('the form is valid'); } }); });$(function () { $('#signupform').submit(function (e) { if (validateForm() === true) { alert('Form is valid.'); } }); }); Tenga en cuenta que la función validateForm() sería la que usa dentro del navegador para probar la validación. EDITAR: Este es de hecho $(this).valid() de jQuery.
NOTA: Al aclarar la pregunta, la respuesta anterior es una forma de detener el envío del formulario en la validación, pero no la técnica que se deseaba ( validación jQuery valid() ). Vea la respuesta de Darin Dimitrov para más detalles.
Además, al volver a leer la pregunta original, la intención era exactamente lo contrario de lo que describí originalmente. Así que edité para demostrar una respuesta funcional en la validación, no cómo evitar enviar un formulario.