我对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>");
});
答案 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()
而不是