jquery自动完成不显示下拉列表
我有这个自动完成输入:jquery自动完成不显示下拉列表,jquery,autocomplete,Jquery,Autocomplete,我有这个自动完成输入: <input type="text" id="find_user" class="autocomplete_field" /> 当用户在测试中键入时,我得到以下结果: [{"id":"26","uname":"test 1","firstname":"Test","lastname":"1","email":"1@mail.com", ............ “选择”下拉列表显示“良好” 我添加了一个选项来显示所有,输入一个* $(".autocompl
<input type="text" id="find_user" class="autocomplete_field" />
当用户在测试中键入时,我得到以下结果:
[{"id":"26","uname":"test 1","firstname":"Test","lastname":"1","email":"1@mail.com", ............
“选择”下拉列表显示“良好”
我添加了一个选项来显示所有,输入一个*
$(".autocomplete_field").keyup(function(){
if ($(this).val() == '*') {
$(this).autocomplete('search', "___");
}
})
结果是:
[{"id":"1","uname":"admin","firstname":"Ad","lastname":"Min","email":"","lang_iso_code":null,.....................
但不显示选择下拉列表
它在我的本地机器上工作,所以我认为可能是超时问题。这就是我添加超时选项的原因,我不确定这是否正确。没有帮助。
我想可能是其他用户中的数据“测试”用户只有两个其他用户。。。所以我分别搜索了这两个用户,填写了他们的名字admin和cron,返回的数据很好,选择框显示出来
当我试图查看所有的现场,它不会显示选择下拉列表。
虽然只有5个用户admin+cron+3个测试帐户
返回2.2kb数据大约需要440ms
我正在使用jqui1.11
编辑:
我刚刚做了一个测试,搜索文本是uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。我假设代码:
$(this).autocomplete('search', "___");
执行与搜索文本时相同的操作___
在conlsole中,我可以看到进行了ajax调用,将term设置为u uuu,结果如上所示。这就像我使用“*”时它不想显示菜单列表一样,而且只在live server上显示。本地工作正常。经过一些测试,以及搜索和响应事件中的一些控制台输出,我得出结论,我的代码一定是导致自动完成字段与自身冲突 此代码:
$(".autocomplete_field").keyup(function(){
if ($(this).val() == '*') {
$(this).autocomplete('search', "___");
console.log(".autocomplete_field search fired");
}
})
调用php页面,从而返回我在控制台中看到的数据。
但在事件触发的跟踪过程中,我还看到原始搜索函数也被调用:
$("#find_user").autocomplete({
....
search: function( event, ui ) {
console.log("#find_user search fired");
}
它按上面的顺序开火。
因此,第二次搜索不符合最小长度标准,因此菜单未显示或清除,无法快速查看任何内容
通过本地测试,结果返回到quick,我假设,在第二次搜索启动之前,第一次搜索启动,得到结果,并显示菜单
因此,我的解决办法是:
$(".autocomplete_field").keyup(function(){
if ($(this).val() == '*') {
//$(this).autocomplete('search', "___");
$(this).autocomplete("option", "minLength", 1);
} else {
$(this).autocomplete("option", "minLength", 3);
}
})
在PHP脚本中进行更改,将*->转换为SQL查询中的*->。。。名称类似“%”。我可能已经做了,这样转换就没有必要了,因为“u”是列表所有触发器,但我喜欢*作为触发器。我建议您查看这篇博客文章,了解jQuery自动完成UI示例-
$(".autocomplete_field").keyup(function(){
if ($(this).val() == '*') {
//$(this).autocomplete('search', "___");
$(this).autocomplete("option", "minLength", 1);
} else {
$(this).autocomplete("option", "minLength", 3);
}
})