Tengo un formulario que tiene una opción para introducir dimensiones para:MVC 3 discreta validación - condicionalmente desactivar/activar la validación
- Ancho & Altura
- Ancho
- Altura
Y Tengo dos divisiones de contenedor que oculto/mostrar dependiendo de cuál de las tres opciones está seleccionada:
<div class="editor-field" id="width-container">
@Html.EditorFor(model => model.Width)
@Html.ValidationMessageFor(model => model.Width)
</div>
<div class="editor-field" id="height-container">
@Html.EditorFor(model => model.Height)
@Html.ValidationMessageFor(model => model.Height)
</div>
Si se selecciona la altura, el ancho no se muestra en el formulario, ¿cómo puedo deshabilitar la validación discreta en el campo de entrada Ancho de una manera que me permita volver a instalarlo fácilmente si el usuario cambia de opinión? eliminar atributos data- * no es una opción. Me complace crear una clase CustomAttribute para manejar esto PERO no quiero tener que hackear los archivos jquery estándar para hacer que esto funcione, ya que hace que la actualización a nuevas versiones sea un dolor de cabeza. Si todo lo demás falla, usaré mi truco usual de agregar un valor de 0 a los campos cuando no son visibles y luego eliminarlos cuando se muestren.
EDIT:
Tenga en cuenta que cuando el ancho no es visible, no es un campo "oculta" de por sí es sólo una etiqueta de entrada que no es visible para el usuario, ya que el div padre tiene un estilo de la pantalla: ninguno
He visto varias versiones de esto, pero ninguna de ellas parece funcionar. Llegué a la conclusión de que el problema es que esta regla no funciona porque no es la etiqueta de entrada que está oculta, es la div principal. o esta regla está diseñada para funcionar en etiquetas "ocultas" y no en etiquetas de entrada "invisibles". Por cierto, probé tu solución y no funciona. – Rob
': hidden' es definitivamente cierto para los elementos que están ocultos porque sus padres están ocultos. Como puede ver en este violín, mi solución funciona bien en un caso básico: http://jsfiddle.net/7PmEz/5/. Así que vamos a tratar de encontrar dónde está el delta de lo que tienes, debe haber algo más que falta. Coloque el html que se genera en jsfiddle, luego intente usar el mismo javascript que uso para probarlo. Si eso funciona, publique el código de vista completo para que podamos echarle un vistazo. – Milimetric
Hmmm frustrante, realmente no puedo poner el código en jsfiddle porque se generó utilizando el framework MS MVC3, por lo que no se está realizando una comparación válida ... – Rob