Tengo una vista MVC con un formulario creado con el método auxiliar Ajax.BeginForm(), y estoy tratando de validar la entrada del usuario con el jQuery Validation plugin. Obtengo el complemento para resaltar las entradas con datos de entrada no válidos, pero a pesar de la entrada no válida, el formulario se publica en el servidor.ASP.Net MVC formulario Ajax con validación jQuery
¿Cómo detengo esto y me aseguro de que los datos solo se publiquen cuando el formulario se valida?
Mi código
La forma:
<fieldset>
<legend>leave a message</legend>
<% using (Ajax.BeginForm("Post", new AjaxOptions
{
UpdateTargetId = "GBPostList",
InsertionMode = InsertionMode.InsertBefore,
OnSuccess = "getGbPostSuccess",
OnFailure = "showFaliure"
}))
{ %>
<div class="column" style="width: 230px;">
<p>
<label for="Post.Header">
Rubrik</label>
<%= Html.TextBox("Post.Header", null, new { @style = "width: 200px;", @class="text required" }) %></p>
<p>
<label for="Post.Post">
Meddelande</label>
<%= Html.TextArea("Post.Post", new { @style = "width: 230px; height: 120px;" }) %></p>
</div>
<p>
<input type="submit" value="OK!" /></p>
</fieldset>
La validación de JavaScript:
$(document).ready(function() {
// for highlight
var elements = $("input[type!='submit'], textarea, select");
elements.focus(function() {
$(this).parents('p').addClass('highlight');
});
elements.blur(function() {
$(this).parents('p').removeClass('highlight');
});
// for validation
$("form").validate();
});
EDIT: Cuando estaba downvotes de la PU blecer problemas de seguimiento y sus soluciones en respuestas, aquí es también el método de validación de trabajo ...
function ajaxValidate() {
return $('form').validate({
rules: {
"Post.Header": { required: true },
"Post.Post": { required: true, minlength: 3 }
},
messages: {
"Post.Header": "Please enter a header",
"Post.Post": {
required: "Please enter a message",
minlength: "Your message must be 3 characters long"
}
}
}).form();
}
OnSubmit no es una de las opciones disponibles en el VS intellisense. Sin embargo, al utilizar OnBegin en su lugar, su solución funciona como un encanto. ¡Muchas gracias por la respuesta rápida y correcta! =) –