0

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

3 回答 3

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;
};
于 2012-08-17T08:40:25.980 回答
1
function findDuplicates(aVal) {
    var isDuplicate = false;
    $("#listBoxAllergy option").each(function (i){            
        if ($.trim(aVal) == $(this).val()) {
            isDuplicate = true;
        }            
    });
    return isDuplicate;
};

试试这个

于 2012-08-17T08:42:09.043 回答
0

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

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

于 2012-08-17T08:40:07.470 回答