validator validationmessagefor validate validaciones net mvc form before asp asp.net-mvc asp.net-mvc-3 unobtrusive-validation fluentvalidation asp.net-mvc-validation

asp.net-mvc - validationmessagefor - validaciones jquery mvc



ASP.net MVC gancho de validaciĆ³n (2)

Como dice la documentación de jQuery / Validation, usted podría usar invalidHandler para reaccionar cuando se envía un formulario no válido.

Pero como la validación discreta de MVC crea una instancia de la Validación en sí misma, tiene que conectar este evento más tarde.

Usando exactamente el mismo mecanismo que jQuery / Validation: ¡podría vincular su código al evento personalizado de elementos de formulario '' invalid-form.validate '', que corresponde al invalidHandler!

$(document).ready(function() { $(''#myform'').bind(''invalid-form.validate'',function(){ alert(''invalid form!''); }); });

Para darle a tu formulario un uso de identificación:

@using (Html.BeginForm(null, null, FormMethod.Post, new { id = "myform" })) { }

Actualizar:

Una forma alternativa de obtener el objeto de validación existente es llamar a validate () en el formulario. Si ya se creó un validador para este formulario, se devolverá:

Edición: después de que ocurrió la inicialización, cambiar .settings.invalidHandler es demasiado tarde para vincularse. Por lo tanto, el siguiente fragmento de código no funcionará [más] a menos que reinicie el validador.

$(document).ready(function() { var existingValdiation = $("#myform").validate(); //the settings property corresponds to the options parameter existingValdiation.settings.invalidHandler = function (form) { alert(''invalid form!''); }; // not recommended: // re-init would bind settings.invalidHandler to ''invalid-form.validate'' // existingValdiation.init(); });

Tengo la siguiente vista en ASP.net MVC 3:

@model Models.CreateProjectViewModel <script type="text/javascript" src="@Url.Content("~/Scripts/jquery.validate.min.js")"></script> <script type="text/javascript" src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")"></script> @using( Html.BeginForm() ) { @Html.TextBoxFor(m => m.ProjectName) @Html.ValidationMessageFor(m => m.ProjectName) <p> <input type="submit" value="Save" /> </p> }

Estoy usando javascript discreto con jQuery y el marco de Validación de Fluent.

Cuando hago clic en el botón Guardar y falla la validación, ¿hay algún evento al que pueda enlazar para llamar a algún javascript personalizado?

function validationFailed() { // do something here only if validation failed }

¿Cómo me ataría a la validación para que cuando fallara (y solo si fallaba) pudiera llamar a mi función validationFailed ()?


Puedes usar el invalidHandler , creo que está en la validación de jquery.

Devolución de llamada inválida de Handler
Devolución de llamada para código personalizado cuando se envía un formulario no válido. Llamado con un objeto de evento como primer argumento y el validador como segundo.