valor texto span obtener etiqueta con change cambiar boton asignar agregar jquery asp.net-mvc-3 jquery-validate requiredfieldvalidator client-side-validation

span - obtener el texto de un button jquery



Requerir validaciĆ³n solo si el campo es visible (4)

Estoy usando el atributo [Required] para la validación del lado del cliente en ASP.NET MVC 3.

La clase se ve como:

public class User { [Required(ErrorMessage = "First Name is required")] public string FirstName { get; set; } }

Quiero que el campo FirstName se valide solo si está visible, que se mostrará solo en ciertas condiciones. ¿Cómo puedo hacer eso?

He usado lo siguiente, pero aún parece validar el campo requerido de ese campo oculto.

$(''#registerForm'').validate({ ignore: ":not(:visible)" });


Con algunos consejos útiles de @Josiah, puedo llegar a mi requerimiento.

Agregue la clase RequiredIfAttribute y el javascript requerido. Consulte la validación condicional en ASP.NET MVC 3

Y en la clase agregue el atributo RequiredIf como:

public class User { [RequiredIf("hFirstName", "true", ErrorMessage = "First Name is required")] public string FirstName { get; set; }

y en aspx:

@Html.TextBoxFor(model => Model.FirstName, new { @style = "height:auto;" }) @Html.ValidationMessageFor(model => Model.FirstName) @Html.Hidden("hFirstName")

Establezca el valor de hFirstName en ''verdadero'' si el campo Nombre está oculto y ''falso'', si está visible.

La magia trabaja con estos cambios. Gracias a @Josiah Ruddell por su answer


Prueba mi atributo de validación personalizado:

[ConditionalRequired("hFirstName==true")] public string FirstName {get, set};

Soporta múltiples condiciones.


Un poco tarde,

namespace System.ComponentModel.DataAnnotations { public class RequiredIfVisibleAttribute : RequiredAttribute { protected override ValidationResult IsValid(object value, ValidationContext context) { if (HttpContext.Current.Request.Form.AllKeys.Contains(context.MemberName)) return base.IsValid(value, context); return ValidationResult.Success; } } }

Pero aquí está mi solución.

Solo una herencia de Requerido que actuará de la misma manera, excepto que solo se activará si el campo está incluido en las claves publicadas.


Yo crearía un atributo condicionalmente requerido. Hay un buen artículo sobre cómo crear uno con la validación de jQuery aquí .

Otra opción: puede hacer referencia a un proyecto como la validación Foolproof (codeplex) que proporciona esta funcionalidad y los scripts del cliente.

Además, puede utilizar ajax para cargar sus vistas parciales para que nunca estén en la página cuando están ocultas. Esto evitaría la validación condicional por completo.