如果存在 2 个或更多相等的结果,则将 select2 建议限制为 1
Posted
技术标签:
【中文标题】如果存在 2 个或更多相等的结果,则将 select2 建议限制为 1【英文标题】:limit to 1 the select2 suggestions if exist 2 or more equal results 【发布时间】:2013-03-04 04:42:22 【问题描述】:我在 /api/searches 文件中有这个 json:
["id":"513dbb61a61654a845000005","text":"ingeniero agrónomo","id":"513a11d4a6165411b2000008","text":"ingeniero agrónomo"]
我正在使用 select2 来显示结果。
这是我的 select2 设置:
$('#query_txt').select2
width: 'resolve'
minimumInputLength: 3
tags: false
showSearchBox: true
maximumSelectionSize: 1
closeOnSelect: true
multiple: false
ajax:
url: "/api/searches"
quietMillis: 100
dataType: 'json'
data: (term, page) -> q: term
results: (data, page) ->
results: data
如果我在我的输入中输入单词 ingeniero agrónomo
select2 建议这两个结果,您可以在下一张图片中看到:
我想要,如果在 json 中存在 2
或更多相等的结果,则限制为 1
select2 建议
如果存在 2 个或更多相同的结果,我如何将 select2 建议限制为 1 个?
【问题讨论】:
【参考方案1】:您需要做的是更新结果函数以处理从数据函数输出的数组并删除重复的文本、未经测试的代码,但是应该这样做:
$('#query_txt').select2
width: 'resolve'
minimumInputLength: 3
tags: false
showSearchBox: true
maximumSelectionSize: 1
closeOnSelect: true
multiple: false
ajax:
url: "/api/searches"
quietMillis: 100
dataType: 'json'
data: (term, page) -> q: term
results: (data, page) ->
indexes = []
uniques = []
i = 0
while i < data.length
if indexes[data[i].text] is `undefined`
indexes[data[i].text] = "defined"
uniques.push
id: data[i].text
text: data[i].text
i++
results: uniques
【讨论】:
我已经编辑了您对 coffeescript 的回答并修复了语法错误。抱歉,此解决方案不起作用,我没有收到有关此解决方案的建议。 是的,也许这一次,select2 可能需要在输出对象中有一个 id 和 text。 谢谢,但这种方法不起作用...我没有得到建议:(。 这个方案我已经测试过了,你需要重新翻译成coffescript,抱歉没用过,不过应该没问题。我在 jsfiddle 中的测试,jsfiddle.net/BgUzc 谢谢,现在工作正常 :)。我已将您的问题编辑为咖啡脚本。谢谢!以上是关于如果存在 2 个或更多相等的结果,则将 select2 建议限制为 1的主要内容,如果未能解决你的问题,请参考以下文章