即使假的选择列表重复,jQuery也返回true

时间:2012-08-17 08:37:20

标签: jquery selectlist

我对jQuery很新。我坚持这一点,我试图在鼠标单击时在选择列表框中找到重复项。如果为true,它将提醒用户,如果为false,它将附加新值和文本。但是,函数findDuplicates(aVal)在调用时总是返回true。我尝试单步执行代码,函数本身可以工作,但是当它进入jQuery脚本(1.7.2)时,它就变成了现实。可能是我做错了什么?提前谢谢!

以下是代码:

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

3 个答案:

答案 0 :(得分: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;
};

答案 1 :(得分:1)

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

试试这个

答案 2 :(得分:0)

在比较器函数中,我将使用严格相等(===)而不仅仅是相等(==),尽管这不是问题的根源。

jQuery中没有value()方法,而是val()而不是