2012-08-17 77 views
0

我对jQuery相当陌生。我坚持这一点,我试图在鼠标点击时在选择列表框中找到重复项。如果为true,则会提醒用户,如果为false,则会附加新值和文本。但是,函数findDuplicates(aVal)在被调用时总是返回true。我试着进入代码,函数本身工作,但是当它进入jQuery脚本(1.7.2)时,它就变成了真的。可能是我做错了什么?提前致谢!即使在选择列表重复的情况下,jQuery也会返回true

下面的代码:

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>"); 
    }); 

回答

2

首先,有jQuery中没有.value()方法。

.value()应该是.val()

其次,你不应该return isDuplicate;.each回调内,外移动。

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

对不起,忘了(),我使用的是第三方ui更改值()为val。但是,是的,搬回来帮助我,现在我觉得很愚蠢。谢谢! – user1606357 2012-08-17 08:56:33

0

在您的比较功能我会用全等(===),而不是仅仅等于(==)去虽然这不是问题的根源。

有jQuery中没有value()方法,它是val()代替

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

试试这个

+0

使用val()方法。或this.value。 – 2012-08-17 08:43:36

+0

Thnx。更新代码 – 2012-08-17 08:46:39

+0

你应该使用'this.value',没有理由永远不会写'$(this).val()'。 – 2012-08-17 08:49:06

相关问题