我有个小提琴

http://jsfiddle.net/jHvmg/318/

$(document).ready(function () {
    $('#campaign_list').chosen({
        no_results_text: "Oops, nothing found!"
    });
    $('#campaign_list').css({
        'width': '100%',
        'height': '30px',
        'border-radius': '2px'
    });
    $('#campaign_list_chosen').css({
        'width': '100%',
        'height': '30px',
        'border-radius': '2px'
    });
    $('#camp_list').chosen({
        no_results_text: "Oops, nothing found!"
    });
    $('#camp_list').css({
        'width': '100%',
        'height': '30px',
        'border-radius': '2px'
    });
    $('#camp_list_chosen').css({
        'width': '100%',
        'height': '30px',
        'border-radius': '2px'
    });
    $("#campaign_list_chosen").find("input").on('keyup', function () {
        var final_list = '';
        var srch_array = new Array();
        var srch_option = new Array();
        var list_option = new Array();
        var str_srch = $(this).val();
        var final_list_option = new Array();
        srch_array = str_srch.split(" ");
        var srch_array_lengh = srch_array.length;
        $("#campaign_list option").each(function () {
            list_option.push($(this).val());
        });
        for (var lo = 0; lo < list_option.length; lo++) {
            var count_match = 0;
            for (var sa = 0; sa < srch_array_lengh; sa++) {
                if (list_option[lo].toLowerCase().indexOf(srch_array[sa]) >= 0) {
                    count_match++;
                }
            }
            if (count_match == srch_array_lengh) {
                final_list_option.push(list_option[lo]);
            }
        }
        $("#campaign_list_chosen").find("ul").html('');
        for (var fo = 0; fo < final_list_option.length; fo++) {
            final_list = final_list + '<li class="active-result" style="" data-option-array-index="1">' + final_list_option[fo] + '</li>';
        }
        $(".chosen-results").html(final_list);
    });
});


我在jquery下拉菜单上添加了模糊逻辑。

但是主要的问题是,如果我在文本框中键入内容并从过滤列表中选择选项,则总是选择第二个选项。

但是,如果我什么也没键入,并从drpdown中选择,则将选择相应的值。

例如,在文本框中键入“我们的营地”,然后选择显示的选项。

您只会看到第二个选项被选中。

我该怎么解决..

最佳答案

我认为问题是您在循环中分配的位置

for(var lo = 0; lo < list_option.length; lo++)




for(var sa = 0; sa <srch_array_lengh; sa++)


也许this是您想要的?

关于javascript - 所选下拉菜单上的模糊逻辑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29347467/

10-11 08:25