选择下拉列表的模糊逻辑

时间:2015-03-30 13:26:55

标签: javascript jquery

我有一个小提琴。

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中选择,则会选择相应的值。

例如,键入&#34; us camp&#34;在文本框中,选择要显示的选项..

您将看到只选择了第二个选项。

我该如何解决..

1 个答案:

答案 0 :(得分:1)

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

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

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

也许this是你想要的?