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);
            }
        })