2012-08-17 76 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

相關問題