J’ai un menu déroulant dans un formulaire qui contrôle les champs qui seront activés / désactivés sur le formulaire à l’aide de .show () et .hide () de jQuery. Dans mes règles jquery.validate, j’ai tous les champs requirejs.
Voici à quoi ma règle jquery.validate ressemble
$("#new_course").validate({ ignore: ":disabled", rules: { "course_init_on": {required: true}, "mins_before": {required: true}, .....
Avec le code ci-dessus, il valide toujours le champ masqué et empêche la soumission du formulaire.
Ce que je peux voir, c’est que vous avez ajouté ignorer “: disabled”, ce qui est différent de “: hidden”
Je pense que vous devriez utiliser:
$("#new_course").validate({ ignore: ":hidden", ...
Si vous voulez vraiment désactiver les éléments de formulaire (que vous devriez probablement sinon, le navigateur publiera ces données), utilisez les éléments suivants:
$("#elm").attr("disabled", "disabled");
Ensuite, le code ci-dessus fonctionnera parfaitement et vous ne posterez pas de données inutiles sur le serveur 🙂
Essayer:
$("#new_course").validate({ ignore: ":hidden", rules: { "course_init_on": {required: true}, "mins_before": {required: true}, .....
Disabled n’est pas coché dans validate.js (codé en dur):
elements: function() { var validator = this, rulesCache = {}; // select all valid inputs inside the form (no submit or reset buttons) return $(this.currentForm) .find("input, select, textarea") .not(":submit, :reset, :image, [disabled]"); }
Vous devez utiliser l’atsortingbut readonly
place