Jquery自动完成未显示应出现在输入元素下方的值列表

Posted

技术标签:

【中文标题】Jquery自动完成未显示应出现在输入元素下方的值列表【英文标题】:Jquery autocomplete not showing the list of values that should appear below the input element 【发布时间】:2018-09-19 09:50:43 【问题描述】:

我一直在尝试实现允许用户从列表中进行选择的功能,该列表是在用户使用自动完成 jquery api 在输入元素中键入文本时创建的。但是,我的实现没有按预期工作,目前,我能够在用户键入时将文本记录到控制台,但相同的文本没有按应有的方式绑定到输入元素。也就是说,允许用户从列表中选择他们的选项的选项。

我能够使用 $getJSON 方法完成所需的结果,但是,此方法仅在数据源未更改时才有效。当我尝试获取用户在文本框中输入的文本时,此方法不起作用。

$(document).ready(function()
    $("#autocomplete1").keyup(function()
        $.ajax(
              type: "POST",
              url: "search1.php",
              data:'keyword='+$(this).val(),
              success: function(data)
                console.log(data);
                $("#autocomplete1").autocomplete(
                   source: data
                );
              
        )
    );
);

search1.php的内容如下:

header("Content-Type", "application/json");
$items = get_merchant_name_by_user_input($_POST['keyword']);
echo json_encode($items);

返回的JSON数据格式为:

[
   "value":"amazob","label":"amazob",
   "value":"Amazon","label":"Amazon",
   "value":"amazon","label":"amazon"
]

【问题讨论】:

dataType:"JSON" 有效吗? 是的。实际上我没有意识到我没有包含 dataType:"JSON"。 叹气,谢谢@FelippeDuarte 没问题。我已经写了一个答案来记录它。 您还应该看看jqueryui.com/autocomplete/#remote-with-cache,因为您可以执行此逻辑,而无需在每次按键时重新初始化自动完成源。忽略缓存部分。 【参考方案1】:

只需使用dataType: "JSON"

$(document).ready(function()
    $("#autocomplete1").keyup(function()
        $.ajax(
              type: "POST",
              dataType: "JSON",
              url: "search1.php",
              data:'keyword='+$(this).val(),
              success: function(data)
                console.log(data);
                $("#autocomplete1").autocomplete(
                   source: data
                );
              
        )
    );
);

【讨论】:

以上是关于Jquery自动完成未显示应出现在输入元素下方的值列表的主要内容,如果未能解决你的问题,请参考以下文章

每个单词下方的jQuery-ui自动完成下拉菜单

Google maps v3 在 jQuery mobile 和 PhoneGap 上具有自动完成功能

输入元素应具有自动完成属性

jquery自动填充/自动完成没有下拉

JQueryUI 自动完成结果未显示,但出现在 DevTools 中

如何停止正文内容显示在页脚内容及下方