当前位置: 首页 > 面试题库 >

使用JSON数据自动完成jQuery

莘羽
2023-03-14
问题内容

想象一个具有以下数据的json文件:

[
    {
        color: "red",
        value: "#f00"
    },
    {
        color: "green",
        value: "#0f0"
    },
    {
        color: "blue",
        value: "#00f"
    },
    {
        color: "cyan",
        value: "#0ff"
    }
]

我希望使用jQuery的自动完成方法,能够将 颜色 显示为选项,以选择并在输入上插入

<input type="text" name="selector" id="selector" />

<input type="text" name="color" id="color" />
<input type="text" name="value" id="value" />

以上不需要介绍。用于选择颜色,input.color具有 颜色 值和input.value具有 value的选择器。

编辑: 我有此JSON数据:

[{
    "label": "Sec\u00e7\u00e3o 1",
    "value": "1"
}, {
    "label": "Sec\u00e7\u00e3o 2",
    "value": "2"
}, {
    "label": "Sec\u00e7\u00e3o 3",
    "value": "3"
}, {
    "label": "Sec\u00e7\u00e3o 4",
    "value": "4"
}]

和这个HTML:

<input type="text" id="name" />
<input type="text" id="value" />

而这个jQuery:

$(document).ready(function(){
    $("#name").autocomplete({
        source: "json.php",
        select: function (event, ui) {
            $("#name").val(ui.label);
            $("#value").val(ui.value);
        }
    });
});

我遵循安德鲁的回答,它提示我选择数据,但是如果我发出警报ui.labelui.value变量,它会显示“未定义”。我想念什么?

Edit2: 假设我有以下HTML:

<input type="text" class="name" />
<input type="text" class="value" />

<input type="text" class="name" />
<input type="text" class="value" />

是否可以使用同一.autocomplete()方法处理多个选择器?喜欢,使用选择我想要的标签,input.name然后仅更新input.value旁边的标签?

[input.name] [input.value]
^我选择^更新其
旁边的标签值
[input.name] [input.value]
^这保持不变^


问题答案:

使用远程数据源:

$("#selector").autocomplete({
    source: function (request, response) {
         $.ajax({
             url: "my_server_side_resource.php",
             type: "GET",
             data: request,
             success: function (data) {
                 response($.map(data, function (el) {
                     return {
                         label: el.color,
                         value: el.value
                     };
                 }));
             }
         });
    },
    select: function (event, ui) {
        // Prevent value from being put in the input:
        this.value = ui.item.label;
        // Set the next input's value to the "value" of the item.
        $(this).next("input").val(ui.item.value);
        event.preventDefault();
    }
});

$.ajax根据需要调整通话。此示例将生成对您的PHP资源的请求,如下所示:

my_server_side_resource.php?term = xyz

如果您可以控制服务器端代码,则可以将返回的数据更改为如下所示:

[
    {
        label: "red",
        value: "#f00"
    }, /* etc */
]

您可以简单地使用一个字符串,即服务器端资源的名称作为source

$("#selector").autocomplete({
     source: "my_server_side_resource.php",
     select: /* same as above */
});

查看带有JSONP的远程示例,以获取使用服务器端资源的完整示例。

编辑: 有关使用本地数据的有效演示,请参见以下示例:http :
//jsfiddle.net/SMxY6/



 类似资料:
  • 问题内容: 好吧,我一直在为此绞尽脑汁(这太糟糕了),但是我一直尝试阅读我所能而且仍然无法使它起作用的内容。 试图用jQuery UI做自动完成 我的json看起来像这样 我正在尝试将此信息用作自动完成的来源。我得到的响应对象很好,我很难以正确的格式获得它,因此我可以将“ ”放在与“值”相关联的隐藏字段中,该字段需要显示为“值”的一部分落下。 尝试了一百万种不同的方法,但最近的尝试却在下面 请多谢

  • 问题内容: 我的PHP代码将JSON数据返回到jquery自动完成功能,但是自动完成功能不起作用 jQuery自动完成 PHP代码 JSON数据输出 在输入“ Ga”时,我在前端得到了空的li标签。 问题答案: 从: http://jqueryui.com/demos/autocomplete/ 您的JSON需要包含或(或两者)。更改为,它应该可以正常工作。

  • 问题内容: 我已经看到许多有关通过JSON传递带有标签和值属性的数组的问题,但关于传递字符串的问题并不多。我的问题是我似乎无法填写自动填充内容。我运行了一个转储函数,并通过JSON将这些样本值传递给自动完成功能: 这是一些代码: 这是fill_id.php: 我的自动完成功能保持空白。如何更改JSON数组以填充它?还是我的ajax成功函数中包含什么? 问题答案: 您可以非常坚持jQueryUI的自

  • 问题内容: 我发现Oleg提供了一个非常不错的演示(http://www.ok-soft- gmbh.com/jqGrid/FillToolbarSearchFilter.htm),该演示显示了“使用本地数据自动完成的jqGrid工具栏搜索”,但是很难使它起作用通过ajax获取json 即使我在加载后强制将网格置于本地,也有充分的理由为什么自动完成功能不起作用? 问题答案: 如果使用jQuery

  • 问题内容: 也许您可以解决一些Ajax问题。 我有AUTO COMPLETE代码-我输入城市名称,该代码会自动为我完成城市名称,还获取城市ID,并应将其放入隐藏的输入字段中(名称=“ cityID”)…但它没有做到这一点。 你能告诉我为什么吗? html代码: 服务器端(仅输出): 脚本: 您可以在这里找到完整的JS: 问题答案: 尝试对ajax_response_city使用div而不是span

  • 我已经使用Spring Data Solr索引了一个位置数据库。我有以下字段: 我试图实现一个自动完成功能。我的ajax调用由一个控制器处理,该控制器调用一个存储库: 这适用于像“加利福尼亚”或“洛杉矶”这样的搜索。但是当我尝试像“洛杉矶”这样的多个单词时,我会得到一个例外: 严重:Servlet。路径为[/xxx]的上下文中servlet[spring mvc]的服务()引发异常[请求处理失败;