[jQuery-fr] Jquery Validate() et les addclass('required') ..

23 views
Skip to first unread message

Florent

unread,
Dec 1, 2011, 3:08:54 PM12/1/11
to jque...@rezo.net
Bonjour !

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

Fanel Dev

unread,
Dec 2, 2011, 3:42:39 AM12/2/11
to jque...@rezo.net
Tes 9 champs masqués existent bien au chargement de la page (et tu les
show() sur le onchange() du select, où tu les crées et les attachent au
DOM ?

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

Olivier GENDRIN

unread,
Dec 2, 2011, 5:39:27 AM12/2/11
to Fanel Dev, jque...@rezo.net
Le 2 décembre 2011 09:42, Fanel Dev <fane...@gmail.com> a écrit :
> 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.

Reply all
Reply to author
Forward
0 new messages