2012-08-17 3 views
0

Je suis assez nouveau pour jQuery. Et je suis coincé avec cela, j'essaie de trouver des doublons dans une zone de liste de sélection sur un clic de souris. Si vrai, il alertera l'utilisateur, s'il est faux, il ajoutera la nouvelle valeur et le texte. Cependant, la fonction findDuplicates (aVal) à l'appel renvoie toujours true. J'ai essayé d'entrer dans le code, la fonction elle-même fonctionne, mais quand elle est entrée dans le script jQuery (1.7.2), elle devient vraie. Peut-être que je fais quelque chose de mal? Merci d'avance!jQuery renvoie la valeur true même si false avec la liste de sélection dupliquée

Voici le code:

function findDuplicates(aVal) { 
     $("#listBoxAllergy option").each(function (i){ 
      var isDuplicate = false; 
      if ($.trim(aVal) == $(this).val()) { 
       isDuplicate = true; 
      } 
      return isDuplicate; 
     }); 
    }; 

    $("#btnAddAllergy").on("click", function() { 
     var allergy = $("#autoComAllergy").val(); 
     if (findDuplicates(allergy)) 
      alert("The allergy is already in the list"); 
     else 
      $("#listBoxAllergy").append("<option value='" + allergy + "'>" + allergy + "</option>"); 
    }); 

Répondre

2

D'abord, il n'y a pas de méthode .value() dans jQuery.

.value() doit être .val().

Deuxièmement, vous ne devriez pas return isDuplicate; dans le rappel .each, déplacer l'extérieur.

function findDuplicates(aVal) { 
    var isDuplicate = false; 
    $("#listBoxAllergy option").each(function (i){ 
     if ($.trim(aVal) == $(this).val()) { 
      isDuplicate = true; 
      return false; // here return false let stop the each. 
     } 
    }); 
    return isDuplicate; 
}; 
+0

Désolé, oublièrent pour changer la valeur() pour val(), je travaillais avec un ui tiers. Mais oui, déménager m'a aidé, je me sens si bête maintenant. Merci! – user1606357

0

Dans votre fonction de comparaison, je vais avec l'égalité stricte (===) au lieu d'égalité (==) bien que ce soit pas la source du problème.

Il n'y a pas de méthode value() dans jQuery, il est val() au lieu

1
function findDuplicates(aVal) { 
    var isDuplicate = false; 
    $("#listBoxAllergy option").each(function (i){    
     if ($.trim(aVal) == $(this).val()) { 
      isDuplicate = true; 
     }    
    }); 
    return isDuplicate; 
}; 

Essayez celui

+0

Utilisez la méthode val(). Ou cette.valeur. –

+0

Thnx. Code mis à jour –

+0

Vous devriez utiliser 'this.value', il n'y a aucune raison d'écrire' $ (this) .val() '. –

Questions connexes