Select2类型来选择
我想使用select2有一个多选下拉列表的状态,但有些错误。Select2类型来选择
通常,当您输入选项时,它将突出显示,以便您可以按回车并选择它。它强调了选项,但没有突出显示它,所以如果我输入“阿拉巴马”,但打回车,它会选择“阿肯色州”。
我使用的是最新版本(3.5.1)
HTML
<label class="control-label" for="states">States:</label>
<input id="states" name="states" />
<input class="btn btn-primary" type="submit" value="Submit Search" />
的JavaScript:
$("#states").select2({
width: 'resolve',
maximumSelectionSize: 5,
ajax: {
dataType:"json",
url:"getStates.cfm",
results: function(data) {
return {results:data};
}
},
multiple:true
});
我缺少某种参数的?我可以发誓,这在我最后一次使用它的时候工作的很好。没有控制台错误,并且它完全点击选择。
注意,github页作品就像我想要的(当你输入,它会选择相匹配的第一个选项)
在选择二3.x中,在下拉列表中突出显示的结果永远是第一搜索结果。这在Select2 4.x中将会改变,所以如果存在选择的选项将被选中。
您正在寻找结果进行不同的排序。默认情况下,Select2按照它们在DOM中的顺序排序,而不是按照它们的相关程度。有关如何使用sortResults
选项自定义结果排序的文档provides an example。
请记住,使用AJAX时,在服务器端排序结果更有效,这就是为什么Select2不会进行任何进一步排序的原因。这可以解释为什么在搜索“阿拉巴马州”时返回“阿肯色州”。
我不是很遵循这个答案,我不想排序我的选项 – 2014-10-31 14:22:23
重新阅读后,这是不相关的不幸的是我的问题。感谢您的尝试。 – 2014-10-31 18:12:45
看看我的select2在做什么,然后进入github页面,输入一个选项,并查看它的功能。当您键入(又名按键事件/按键事件)时,Select2应该突出显示最相关的选项。我不寻找默认突出显示。请再次阅读我的问题 – 2014-10-31 18:32:57
我有同样的问题。当我发现每次我输入搜索框时,发现解决方案,每次它调用query
函数。而已。因此,只有在可用选项的任何文本中至少匹配一个字符时,我才需要填写结果。下面的方法:
query : function(opts){
var res = [];
var fulloptions = ArrayFoundUponYourAjaxOrAnyStaticOptions;
var stripDiacritics = Select2.util.stripDiacritics;
for(var z=0,len=fulloptions.length;z<len;z++){
if(stripDiacritics(fulloptions[z].text.toUpperCase()).
indexOf(stripDiacritics(opts.term.toUpperCase())) >= 0){
res.push(fulloptions[z]);
}
}
opts.callback({ results : res }); // res is your filtered/matching rows out of which first one will get auto hightlighted
}
这似乎不太可能,但我不知道,由于小写的“a”开始,选择2算法真的“认为”是“阿肯色州”排在最后接近“亚拉巴马”号比“阿拉巴马州“是。 – Retsam 2014-10-30 22:06:00
@Retsam - 我构建了一个演示来测试这个理论,而这不是这种情况的原因。 – 2014-10-30 23:38:08
阿拉巴马州被查询时为什么会返回阿肯色州? – 2014-10-31 18:37:20