2011-06-27 6 views
14

Buscando una forma de enganchar en el lado del cliente falla condición para el formulario.¿Cómo enganchar el error de jQuery validar discreto en MVC 3?

Necesito volver a habilitar un botón de envío si la validación falla para que puedan volver a intentarlo.

Encontré lo siguiente: Using unobtrusive validation in ASP.NET MVC 3, how can I take action when a form is invalid? que podría funcionar pero esperaba hacerlo desde un lugar central, ya que el formulario puede enviarse desde varios lugares.

Actualización:

Esta función parece funcionar bien, suponiendo que tiene una etiqueta de entrada con la clase ".goButton".

<script language="javascript" type="text/javascript"> 
    $(".goButton").click(function() { 
     if (!$(this).closest("form").valid()) { 
      return false; 
     } 
     $(".goButton").after("Please wait..."); 
     $(".goButton").hide(); 
    }); 
</script> 

Respuesta

24

Luego puede enganchar TODOS los formularios desde un lugar central - solo tenga en cuenta que se engancharán todos los formularios. En lugar de usar $("#formId") en la muestra, simplemente use $("form").submit() y se llamará a ese delegado para enviar cualquier formulario y en ese método puede llamar a su cheque de validación y devolver verdadero (para enviar el formulario) o falso para evitarlo.

Algo como esto de la parte superior de mi cabeza

$("form").submit(function() { 
    if (!$(this).valid()) { 
     return false; 
    } 
    else 
    { 
     return true; 
    } 
}); 
+0

Gracias, creo que es lo que estaba buscando. –

+1

Llamar $ (this) .valid() aquí realmente ejecuta la lógica de validación que era exactamente lo que estaba buscando. Estaba teniendo problemas para obtener un recuento de los elementos .form-validation-error dentro de un evento $ (formulario) .submit() hasta llamar a $ (this) .valid(). ¡Mucho! –

Cuestiones relacionadas