Javascript 选择2,当没有匹配的选项时,应显示“其他”

Javascript 选择2,当没有匹配的选项时,应显示“其他”,javascript,jquery,jquery-select2,Javascript,Jquery,Jquery Select2,使用select2下拉列表,如果没有与用户键入的输入匹配的选项,如何获得显示的默认选项 $("something").select2({ formatNoMatches: function(term) { //return a search choice } }); 我在select2文档或堆栈溢出中找不到任何真正符合此功能的内容 编辑 我离这个越来越近了 $("something").select2({ formatNoMatches: function(term) {

使用select2下拉列表,如果没有与用户键入的输入匹配的选项,如何获得显示的默认选项

$("something").select2({
  formatNoMatches: function(term) {
    //return a search choice
  }
});
我在select2文档或堆栈溢出中找不到任何真正符合此功能的内容

编辑 我离这个越来越近了

$("something").select2({
  formatNoMatches: function(term) {
    return "<div class='select2-result-label'><span class='select2-match'></span>Other</div>"
  }
});

但这是一个非常简单的问题,而且也不可点击。

我通过更改匹配器解决了这个问题

$('#activity_log_industry_name').select2
  matcher: (term, text) ->
    if text=="Other"
      return true
    text.toUpperCase().indexOf(term.toUpperCase())>=0

这是咖啡脚本。唯一的问题是任何搜索都会弹出Other,但这可以通过修改sortResults函数轻松解决。

补充@vararis的答案:

附加到元素的Select2不允许自定义createSearchChoice或查询函数,因此我们需要手动添加一个option元素,我将其添加为元素的最后一个选项,以便我们可以轻松地将其从结果集中删除:

<select>
  ...
  <option value="0">Other</option>
</select>
sortResults: function(results) {
  if (results.length > 1) results.pop();
  return results;
}
最后,当除了最初始终在结果集中的其他结果外,还有任何其他结果时,我们需要从结果集中删除其他选项:

<select>
  ...
  <option value="0">Other</option>
</select>
sortResults: function(results) {
  if (results.length > 1) results.pop();
  return results;
}
试试这个答案


当未找到匹配项时,使用以下代码将消息显示为“其他”

$("select").select2({ 
formatNoMatches   :    function(term) {       
    return   "Other";
}
});

试试看,在较新的版本中这项工作选择2 4.0.3 不添加新变量

在数据中搜索相似的查询

<select id="something">
  ...
  <option value="other">Other</option> <!-- or put this in "dataItemsList" for dynamic option -->
</select>

希望这能奏效。

在Select2的4+版中,匹配器应按如下方式传递:

<select>
  ...
  <option value="0">Other</option>
</select>
$something.select2{ 匹配器:函数参数、数据{
如果data.id==0{/要自定义格式匹配,请在视图中使用以下代码


ui-select2={formatNoMatches:'No Results Found'}

对select2不太熟悉,但这篇文章可能会有所帮助:您是将其附加到select还是隐藏输入中使用?阅读上一篇文档,我使用了一个旧版本,我发现有一种方法可以使用函数来完成它,但可以在下划线后指示操作,例如$something\u get。我只需要使用基本匹配。@MaximilianoRios你能详细说明一下,或者给我指一下你正在查看的文档吗?当然,在这里可以找到:注意,如果结果集的末尾没有像['apples','other','trees'这样的'other',,我认为第二部分就不起作用了,但很明显如何从这里开始。是的,我在一开始就对该部分进行了注释。=]即使您有某种排序,我也会在后面附加另一个选项,以便方便地将其弹出。但迭代结果集数组并拼接另一个结果也不难。matcher签名更改为Select2版本4+,请看HI.。当结果中没有匹配的元素时,我只需要添加其他选项。您能帮助我吗me@DhrumilShah现在我们开始,检查那里的链接,我已经更新了我的小提琴。我使用了javascript名称alasql。非常感谢@KingGeneral。但是我有其他选项。当我键入其他时,有两个结果是匹配g、 我只需要一个结果。你能建议一下吗?你的意思是当键入other时,它显示2个other吗?啊,已经修复了这个问题,请看上面的代码/fiddleHi@KingGeneral。它仍然可以看到另外两个选项。我想下面的代码没有比较其他值。请帮助…ifresult==false&&tag.term!=other{return{id:other,text:other};}
<select>
  ...
  <option value="0">Other</option>
</select>