0

私はjQueryにかなり慣れていません。そして、これで立ち往生しています。マウスをクリックすると、選択リストボックスで重複を見つけようとしています。trueの場合はユーザーに警告し、falseの場合は新しい値とテキストを追加します。ただし、関数findDuplicates(aVal)を呼び出すと、常にtrueが返されます。コードにステップインしてみましたが、関数自体は機能しますが、jQueryスクリプト(1.7.2)に入ると、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>");
    }); 
4

3 に答える 3

2

まず、.value() jQueryにはメソッドがありません

.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

あなたのコンパレータ関数では、問題の原因ではありませんが、単純な等式(==)ではなく厳密な等式(===)を使用します。

value()jQueryにはメソッドはなく、val()代わりに

于 2012-08-17T08:40:07.470 に答える