2010-10-11 5 views
0

J'essaie d'utiliser le plugin Jquery Validate et j'ai été capable de comprendre comment l'utiliser sur des champs statiques.Jquery Custom Valider Plugin AddMethod sur les formulaires dynamiques

Mon problème est de savoir comment l'utiliser sur mes formulaires dynamiques. J'ai créé un violon pour discuter de mon problème. J'espère que vous pouvez avoir de la patience en lisant ceci. Le lien du violon est here

Maintenant, voici ce que je veux faire, valider l'identifiant de l'ordinateur entré dans chaque zone de texte et s'assurer qu'il est unique. Supposons que vous saisissiez ABCD-123 deux fois, le système devrait vous avertir qu'il n'est pas unique. En espérant que quelqu'un puisse me donner un coup de main à ce sujet. Merci

+0

Pour votre information dans jsFiddle si vous mettez le code JS dans le javascript boîte indéxé est bien aussi. [En regardant maintenant] – naugtur

+0

d'abord, il semble qu'il vous manque la classe 'machineID' des entrées. Ensuite, vous devriez passer en revue les entrées dans le formulaire - votre boucle inclut le modèle caché. le seul problème auquel je suis confronté maintenant est le script non-revalidant lorsque vous corrigez l'autre doublon (pas celui qui cause la validation en premier lieu). Mise à jour bientôt. –

Répondre

1

tout d'abord - mettre des commentaires dans votre code pendant que vous écrivez.

l'erreur est ici:

var arrElements = $(".machineID"); 

arrElements est toujours vide, il n'y a pas d'élément avec machineID classe

et votre chacun ne fonctionne pas. Je l'ai refactorisé http://jsfiddle.net/PaTJ4/

Votre code pourrait utiliser d'autres correctifs, c'est un peu trop compliqué pour cette tâche. Mais maintenant ça marche.

bonne chance

+0

Excellent post .. Désolé je tape juste tout alors j'ai oublié de placer des commentaires. Bien que j'ai toujours une requête, sur chaque addmethod que je vois, je vois toujours cette ligne this.optional (element). Qu'est-ce qu'on entend par cette ligne? Je viens de l'ajouter en pensant que c'est toujours nécessaire. –

+0

@Mark C'est une partie du plugin de validation je suppose. Et il vérifie si le champ est défini sur facultatif afin qu'il ne valide pas un champ facultatif. Tu n'en as pas besoin je suppose. Mais je n'ai jamais utilisé le plugin de validation – naugtur

0

Je me suis amélioré sur votre version - lorsqu'une duplication est détectée, une des champs en double doivent être marqués comme non valides, et devrait pouvoir être modifiée afin de résoudre le problème. Donc, vous devrez revalider tous les autres champs à chaque fois (en utilisant validator.element()), mais évitez une récursivité (en utilisant validator.validatingOthers).

Je vais poster le code checkMachineIDs ici pour être complet:

function checkMachineIDs(element){ 
     if($(element).val() != ""){ 
      var arrElements = $("#machineList .machineID"); 
      var $element = $(element); 
      var validator = $($element[0].form).validate(); 
      if(arrElements.length > 1){ 
       var valid = true; 
       arrElements.not('#'+$element.attr('id')).each(function() { 
        var current = $(this); 
        if (current.val() == $element.val()) 
        valid = false; 
       }); 
       if (!validator.validatingOthers) { 
        validator.validatingOthers = true; 
        arrElements.not('#'+$element.attr('id')).each(function() { 
         validator.element(this); 
        }); 
        if (valid) validator.element($element); 
        validator.validatingOthers = false; 
       } 
       return valid; 
      }else{ 
       return true; 
      } 
     }else{ 
      return true; 
     } 
    } 
Questions connexes