tengo varios entrada separada en diferentes contenedores (paneles). El problema que tengo es que si uno de estos paneles está oculto (style="display:none;"
), el complemento jQuery.validate no valida esas entradas.jQuery.validate no válido si el contenedor se oculta
que hacer una prueba con un pequeño ejemplo y ocurre el mismo problema:
vista:
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Fields</legend>
<div class="UserName" style="display:none;">
<div class="editor-label"> @Html.LabelFor(model => model.UserName) </div>
<div class="editor-field">
@Html.TextBoxFor(model => model.UserName) @Html.ValidationMessageFor(model => model.UserName)
</div>
</div>
<div class="editor-label"> @Html.LabelFor(model => model.FirstName) </div>
<div class="editor-field">
@Html.TextBoxFor(model => model.FirstName) @Html.ValidationMessageFor(model => model.FirstName)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.LastName)
</div>
<div class="editor-field">
@Html.TextBoxFor(model => model.LastName) @Html.ValidationMessageFor(model => model.LastName)
</div>
<div class="editor-label"> @Html.LabelFor(model => model.City) </div>
<div class="editor-field">
@Html.TextBoxFor(model => model.City) @Html.ValidationMessageFor(model => model.City)
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
Modelo:
public class UserModel {
[Required]
[StringLength(6, MinimumLength = 3)]
[Display(Name = "User Name")]
[RegularExpression(@"(\S)+", ErrorMessage = "White space is not allowed")]
[ScaffoldColumn(false)]
public string UserName { get; set; }
[Required]
[StringLength(8, MinimumLength = 3)]
[Display(Name = "First Name")]
public string FirstName { get; set; }
[Required]
[StringLength(9, MinimumLength = 2)]
[Display(Name = "Last Name")]
public string LastName { get; set; }
[Required()]
public string City { get; set; }
}
La propiedad "nombre de usuario" no se valida en el cliente cuando está dentro del div con estilo "display:none;"
Gracias que
¿Qué harás si la validación falla? ¿Cómo lo corregirá el usuario si está oculto? Tiene sentido para jQuery validar solo los campos que están visibles en la página y el usuario puede corregirlos en caso de que fallen la regla. – ShankarSangoli
@ShankarSangoli Como explico en las preguntas, hay campos que están ocultos en los paneles para evitar que la vista sea muy larga, si no se valida, muestra los paneles con error. Este es solo un ejemplo simple con el mismo problema. –