Je butte sur un probleme de validation de form avec validate depuis 2
jours ...
J'ai un formulaire avec un selecteur ( de 1 a 10 ).. quand celui ci
change, il affiche autant de champs que la valeur du select
(si on selectionne 3, il affiche 2 champs <input id=$n ... e plus de
celui du départ, qui a une class='required'
Lorsqu'on "montre" les 2 autre, on lui "addclass('required') "...
Bon, ca ca marche !
pour le premier champs, il a une class en dur depuis le debut, si je
valide mon form, il me montre bien les label 'error' avec le message
sur le premier champs !
si j'ai 3 champs, qui ont le required ( donc les deux derniers avec un
addclass a la volée..) il me montre rien !
sauf si je clic dans le champs 2( ou le 3, puis que je le quitte, là,
il me met le label error..
mais pas quand je cherche a valider le form ...
Chaque input a un id unique !!
J'ai un $('id_form').validate();
et un
$.validator.setDefaults({
errorElement: "label",
wrapper: "div",
errorPlacement: function(error, element) {
error.insertBefore(element)
element.prev('.error').attr("htmlfor", element.attr("id"));
element.css('background', 'yellow');
},
highlight: function(element, errorClass) {
$(element).fadeOut(function() {
$(element).fadeIn();
});
},
unhighlight: function(element, errorClass, validClass) {
$(element).css('background', 'lightgreen');
}
});
Je comprends pas ou ca merde !!
quelqu'un aurait il une piste ???
_______________________________________________
jQue...@rezo.net - http://listes.rezo.net/mailman/listinfo/jquery-fr
Si c'est la 2ème solution, c'est parce que tu instancie ton validate()
alors qu'il n'y a qu'un seul champ d'affiché. Javascript parcoure le
DOM, et applique les événements sur ce qu'il trouve. Si tu rajoutes un
élément ensuite dans le DOM, celui-ci n'était pas connu de Javascript au
moment où il a parcouru le DOM.
Tu peux essayer, sur le onchange() du select, de destroy ton validate(),
et de le re-instancier, mais c'est lourd pour pas grand chose : /
Sinon, tu regarde du côté de live() : http://api.jquery.com/live/.
C'est ce qu'il faut utiliser quand tu génère du contenu après le
lancement des scripts.