Tengo un formulario con un grupo de cuadros de texto que están deshabilitados de forma predeterminada, luego habilitado mediante el uso de una casilla de verificación al lado de cada uno.El uso depende del complemento jQuery Validation
Cuando está habilitado, se requiere que los valores en estos cuadros de texto sean un número válido, pero cuando están deshabilitados no necesitan un valor (obviamente). Estoy usando el complemento jQuery Validation para hacer esta validación, pero no parece estar haciendo lo que esperaba.
Cuando hago clic en la casilla de verificación y deshabilito el cuadro de texto, sigo recibiendo el error de campo no válido a pesar de la cláusula depends
que agregué a las reglas (vea el código a continuación). Curiosamente, lo que realmente ocurre es que el mensaje de error se muestra por una fracción de segundo y luego desaparece.
Este es un ejemplo de la lista de casillas de verificación & los cuadros de texto:
<ul id="ItemList">
<li>
<label for="OneSelected">One</label><input id="OneSelected" name="OneSelected" type="checkbox" value="true" />
<input name="OneSelected" type="hidden" value="false" />
<input disabled="disabled" id="OneValue" name="OneValue" type="text" />
</li>
<li>
<label for="TwoSelected">Two</label><input id="TwoSelected" name="TwoSelected" type="checkbox" value="true" />
<input name="TwoSelected" type="hidden" value="false" />
<input disabled="disabled" id="TwoValue" name="TwoValue" type="text" />
</li>
</ul>
Y aquí está el código jQuery Estoy usando
//Wire up the click event on the checkbox
jQuery('#ItemList :checkbox').click(function(event) {
var textBox = jQuery(this).siblings(':text');
textBox.valid();
if (!jQuery(this).attr("checked")) {
textBox.attr('disabled', 'disabled');
textBox.val('');
} else {
textBox.removeAttr('disabled');
textBox[0].focus();
}
});
//Add the rules to each textbox
jQuery('#ItemList :text').each(function(e) {
jQuery(this).rules('add', {
required: {
depends: function(element) {
return jQuery(element).siblings(':checkbox').attr('checked');
}
},
number: {
depends: function(element) {
return jQuery(element).siblings(':checkbox').attr('checked');
}
}
});
});
Ignorar el campo oculto en cada li
que está ahí porque Estoy usando el método Html.Checkbox
de asp.net MVC.
Estoy comentando en lugar de responder porque nunca he usado el complemento de validación. ¿Has intentado poner textBox.validate() dentro de la parte verdadera de la declaración if que marca una casilla marcada? – cLFlaVA
Desafortunadamente eso no lo hizo –