À l'aide dépend avec le plugin jQuery Validation

J'ai un formulaire avec un tas de zones de texte qui sont désactivées par défaut, puis activée par l'utilisation d'une case à cocher en regard de chacun d'eux.

Lorsque cette option est activée, les valeurs de ces zones de texte sont nécessaires pour être un nombre valide, mais lorsqu'il est désactivé, ils n'ont pas besoin d'une valeur (évidemment). J'utilise le plugin jQuery Validation de faire cette validation, mais il ne semble pas être en train de faire ce que j'attends.

Lorsque je clique sur la case pour désactiver la zone de texte, j'obtiens toujours le champ non valide erreur en dépit de la depends clause j'ai ajouté les règles (voir code ci-dessous). Curieusement, ce qui se passe réellement est que le message d'erreur s'affiche pendant une fraction de seconde puis s'en va.

Voici un échantillon de la liste de cases à cocher & zones de texte:

<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>

Et voici le code jQuery que j'utilise

//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');
            }
        }
    });
});

Ignorer le champ caché dans chaque li il est là parce que je suis en utilisant asp.net MVC est Html.Checkbox méthode.

Je suis commentant, au lieu de répondre parce que je n'ai jamais utilisé le plugin de validation. Avez-vous essayé de mettre de zone de texte.valider() dans la vrai partie de l'instruction if qui vérifie une case est cochée?
Malheureusement, ce n'est pas l'

OriginalL'auteur Glenn Slaven | 2008-12-19