2011-09-13 4 views
0

J'ai une table html dont les lignes sont ajoutées en cliquant sur le bouton Ajouter. La ligne contiendra 4 listes déroulantes Type de produit, Description du produit, Source, destination1, destination 1trouver des dupicates dans la table html en utilisant jquery

Comment puis-je limiter la combinaison de ceux-ci ne sont pas dupliqués dans l'une des lignes.

Merci

+0

Un peu de code aiderait. –

+0

@ Py, actuellement je n'ai pas de code. Je regardais la méthode: contains de jquery. Mais pas en mesure de l'implémenter – user941974

+0

Vous cherchez quelque chose comme [this] (http://datatables.net/release-datatables/examples/api/multi_filter_select.html) ?? –

Répondre

1

Le code suivant est juste une vérification; il ne change pas dynamiquement le contenu pour l'adapter au changement de l'utilisateur.

En utilisant le code html que vous avez fourni, la fonction est la suivante:

function check(){ 
    var currentState=[], 
     isGood=true, 
     text; 
    $("#dataFieldTable tr").each(function(index,element){ 
     if(index !==0){ 
      text=$(":selected",element).text(); 
      if(currentState.indexOf(text)!=-1){ 
       isGood=false; 
       return false; 
      } 
      currentState.push(text); 
     } 
    }); 
    alert(isGood); 
    return isGood; 
} 

Ce qu'il fait est le suivant:

  • Sélectionner toutes les <tr> balises dans le tableau
  • itérer sur la tr nous voulons vérifier (dans mon exemple, je les ai pris tous sauf le titre, mais c'est quelque chose de facile à changer, c'est juste le if(index !==0))
  • saisir tous les éléments sélectionnés dans la ligne
  • concaténer leur valeur texte
  • vérifier si elle est différente de la précédente
  • si elle est différente, vérifiez la suivante ...
  • si ce n'est pas, il est fini .
  • renvoyer true ou false (et l'alerter) en fonction du résultat.

Et c'est tout.

Vous pouvez le voir en action ici: http://jsfiddle.net/uQGGW/1/

Si vous cliquez sur la ligne de contrôle, il alertera vrai si toutes les lignes sont différentes et faux ailleurs.

Espérons que ça aide.

+0

Merci.Travaille bien. Je vais le modifier à mon besoin. Pour mettre en évidence les lignes en double. – user941974

+0

J'essaie d'appliquer une couleur de fond à chaque élément. Mais l'arrière-plan ne s'applique pas. [link] (http://jsfiddle.net/Bzbkn/1/) – user941974

+0

Je l'ai mis à jour un peu: http://jsfiddle.net/Bzbkn/5/. Vous ne pouvez pas appliquer la couleur de fond pour sélectionner si je ne me trompe pas. Donc je l'ai appliqué à la ligne. J'ai également supprimé le retour false afin de parcourir toute la boucle. –

Questions connexes