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页作品就像我想要的(当你输入,它会选择相匹配的第一个选项) enter image description here

+0

这似乎不太可能,但我不知道,由于小写的“a”开始,选择2算法真的“认为”是“阿肯色州”排在最后接近“亚拉巴马”号比“阿拉巴马州“是。 – Retsam 2014-10-30 22:06:00

+0

@Retsam - 我构建了一个演示来测试这个理论,而这不是这种情况的原因。 – 2014-10-30 23:38:08

+0

阿拉巴马州被查询时为什么会返回阿肯色州? – 2014-10-31 18:37:20

在选择二3.x中,在下拉列表中突出显示的结果永远是第一搜索结果。这在Select2 4.x中将会改变,所以如果存在选择的选项将被选中。

您正在寻找结果进行不同的排序。默认情况下,Select2按照它们在DOM中的顺序排序,而不是按照它们的相关程度。有关如何使用sortResults选项自定义结果排序的文档provides an example

请记住,使用AJAX时,在服务器端排序结果更有效,这就是为什么Select2不会进行任何进一步排序的原因。这可以解释为什么在搜索“阿拉巴马州”时返回“阿肯色州”。

+0

我不是很遵循这个答案,我不想排序我的选项 – 2014-10-31 14:22:23

+0

重新阅读后,这是不相关的不幸的是我的问题。感谢您的尝试。 – 2014-10-31 18:12:45

+0

看看我的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 
}