J'ai un formulaire avec un tas de zones de texte désactivées par défaut, puis activées en cochant chacune d'elles.L'utilisation dépend du plugin jQuery Validation
Lorsqu'elles sont activées, les valeurs dans ces zones de texte doivent être un nombre valide, mais lorsqu'elles sont désactivées, elles n'ont pas besoin d'une valeur (évidemment). J'utilise le plugin jQuery Validation pour faire cette validation, mais il ne semble pas faire ce que j'attends.
Lorsque je clique sur la case à cocher et que je désactive la zone de texte, j'obtiens toujours l'erreur de champ non valide malgré la clause depends
que j'ai ajoutée aux règles (voir le code ci-dessous). Curieusement, ce qui se passe réellement est que le message d'erreur s'affiche pendant une fraction de seconde puis disparaît.
Voici un exemple de la liste des cases & 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 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 J'utilise la méthode Html.Checkbox
d'asp.net MVC.
Je commente au lieu de répondre parce que je n'ai jamais utilisé le plugin de validation. Avez-vous essayé de placer textBox.validate() dans la partie vraie de l'instruction if qui vérifie une case cochée? – cLFlaVA
Malheureusement, cela ne l'a pas fait –