jquery valider sur des éléments non encore créés

Je me demande s’il est possible que le plug-in jQuery Validator valide des éléments qui n’existent pas encore dans le dom lorsque les règles sont initialement configurées.

L’appel de la méthode .Rules (“add”, therules) attache uniquement les règles aux éléments qui existent actuellement dans le dom. Si je devais en créer. La validation ne se déclenche pas. Des pensées?

Page d’accueil du validateur que j’utilise: http://bassistance.de/jquery-plugins/jquery-plugin-validation/

De nouveaux éléments sont en cours de création via http://ejohn.org/blog/javascript-micro-templating/

En gros, il y a un appel ajax et le serveur renvoie un paquet de json (ajaj?), Ce json est alimenté par le moteur de templates de resig. Un exemple de modèle ressemble à ceci:

  <input type="hidden" value="" id="Edit.ID" name="Edit.ID" /> <input type="text" value="" id="Edit.Price" name="Edit.Price" />   

Les valeurs sont évidemment renseignées via le json transmis.

Je dois également mentionner que j’utilise le framework de validation xval, qui génère automatiquement les règles de validation jquery pour moi: http://blog.codeville.net/2009/01/10/xval-a-validation-framework-for- aspnet-mvc /

Ok, essayez-en deux. Qu’est-ce que l’ajout dynamic de vos éléments? Ne pouvez-vous pas simplement placer le .Rules (“append”,) dans le même code?

Hé pas sûr si c’est un hack impoli, mais cela a fonctionné pour moi. Avant cela, je faisais un each () sur le sélecteur et je rencontrais le même problème que vous rencontrez avec les éléments Ajaxed nouvellement créés.

L’événement Mouseover en direct semble avoir fait l’affaire, à condition que vous ne soyez pas fou avec vos css:

 // >>> MSG/Comment form validator, now and forever... $('form.streamForms').live('mouseover', function(){ $(this).validate({ rules: { text: "required" }, messages: { text: " " } }); }); 

J’espère que ça aide!

Vous voudrez vous pencher sur les nouveaux événements en direct de jQuery 1.3

Voici comment j’ai géré cela. J’ai d’abord créé mon object de validation.


     var myvalidations = {};
     myvalidation.registerform = function () {$ ("# registerform"). validate ({
             submitHandler: fonction (formulaire) {
                 $ (formulaire) .ajaxSubmit (optionspersonal); 
                 // submitReg ();
             },
                     règles: {
                 Prénom: {
                      requirejs: vrai,
                      longueur minimale: 5,
                      maxlenght: 22
                 },
                     messages: {
                              Prénom: {
                                  requirejs: "Dites-nous comment vous appeler.",
                      minlength: "Votre nom d'utilisateur doit comporter au moins 5 caractères"
                              }
                      }
              });
         }

Maintenant, chaque fois que vous créez votre formulaire, assurez-vous qu’il a un ID ou faites-le pour le référencer et appelez simplement votre fonction juste après sa création.


     // crée mon contenu
     $ ('. content'). html ('- fields etc--');
     // append une validation
     myvalidation.registerform ();

Toute autre suggestion est la bienvenue. mais je pense fondamentalement que c’est la bonne approche.