Jquery 根据自动完成器输出显示不同的面板
我有一个只包含jQuery自动完成文本字段的页面。Jquery 根据自动完成器输出显示不同的面板,jquery,jquery-ui,Jquery,Jquery Ui,我有一个只包含jQuery自动完成文本字段的页面。 如果用户执行了搜索并从下拉列表中选择了一个项目,则自动完成器下会显示一个网格,其中包含所选项目的数据。 另一方面,如果找不到数据,则面板应平滑地显示在包含两个按钮和文本的自动完成器下 任何关于如何实现这一点的提示都将受到高度赞赏 最困难的部分是确定是否没有结果作为autocomplete结果集的一部分返回,但是没有。您没有提到您使用的是远程数据源还是本地数据源,或者您的数据是什么样子的,但是这应该让您知道该怎么做 将函数引用传递给源参数。在该函
如果用户执行了搜索并从下拉列表中选择了一个项目,则自动完成器下会显示一个网格,其中包含所选项目的数据。
另一方面,如果找不到数据,则面板应平滑地显示在包含两个按钮和文本的自动完成器下
任何关于如何实现这一点的提示都将受到高度赞赏 最困难的部分是确定是否没有结果作为autocomplete结果集的一部分返回,但是没有。您没有提到您使用的是远程数据源还是本地数据源,或者您的数据是什么样子的,但是这应该让您知道该怎么做
源
参数。在该函数中,如果没有返回结果,则执行一些特殊操作。或者,您可以在自定义事件处理程序中编写如下代码,如上面的答案所述:
source: function(request, response) {
var result = $.ui.autocomplete.filter(src, request.term);
if (!result.length) {
$("#container")
.hide()
.html("<strong>" + request.term + "</strong> Not Found.")
.fadeIn(3000);
}
response(result);
},
本例仅假设在自动完成中的每个可用项上都有一个名为info
的属性,并绘制一个简单的表注意事项:
- 虽然这不是直观的,但实际上,您可以在每个自动完成响应项中拥有任何想要的属性。您可以使用
在事件处理程序中按名称访问这些属性ui.item.propertyName
- 如果要添加大量内容,我可能建议使用某种客户端模板,例如
- 您可以使用
、fadeIn
或show
平滑地附加内容animate
select: function(event, ui) {
$("#container")
.hide()
.html("<table><tr><td>" + ui.item.value + "</td><td><a href='" + ui.item.info + "'>" + ui.item.info + "</a></td></tr></table>")
.fadeIn(3000);
}