我有个小提琴
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/