使用 jquery 在预定义的 html 块中呈现自动完成建议

发布于 2024-11-27 04:35:20 字数 396 浏览 1 评论 0原文

我有一个预定义的 HTML 代码,

<div id="wrapper">
   <div class="element"></div>
   <div class="element"></div>
   <div class="element"></div>
</div>

还有一个输入框。我有一个远程源,它可以以 jsonp 格式返回结果。我想利用 jquery 的自动完成功能,但我不想将结果显示在新创建的 div 下拉列表中,而是想将它们填充到上面显示的现有 HTML 中。

我尝试了很多搜索,但似乎没有找到一种方法。我对 jquery 相当陌生,所以如果我遗漏了一些太明显的东西,请原谅我。

I have a predefined HTML code say,

<div id="wrapper">
   <div class="element"></div>
   <div class="element"></div>
   <div class="element"></div>
</div>

and I have a input box. I have a remote source which can return me the results in jsonp format. I want to utilize jquery's autocomplete feature, but instead of the results being shown in a dropdown newly created div, I want to populate them in my existing HTML shown above.

I tried searching a lot for it, but I don't seem to find a way to do that. I'm fairly new to jquery, so pardon me if I'm missing something too obvious.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

硬不硬你别怂 2024-12-04 04:35:20

jQuery UI 自动完成具有内置功能,可以自定义结果的显示此演示展示了如何实现覆盖 _renderItem jQuery UI 自动完成代码中的“autocomplete”数据属性的 方法。

HTML

<label for="tags">Tags: </label><input id="tags" />
<div id="wrapper"></div>

JavaScript

$('#tags').autocomplete({
    source: availableTags,
    search: function(event, ui) {
       // clear the existing result set
       $('#wrapper').empty();
    },
})
.data('autocomplete')._renderItem = function(ul, item) {
    return $('<div class="element"></div>')
        .data('item.autocomplete', item)
        .append('<a href="#">' + item.label+ '</a>')
        .appendTo($('#wrapper'));
    };

CSS& (隐藏普通容器)

.ui-autocomplete {
    display:none !important;
}

您可以通过更改 .data('autocomplete')< 中的 .append() 方法内的标记来自定义每个项目 /code> 函数,如果您想进一步操作

搜索结果,您可能需要查看其他自动完成事件,例如示例清除列表,如果 获得焦点。

jQuery UI autocomplete has inbuilt functionality to customize the display of the results. This demo shows how it can be achieved which overrides the _renderItem method of the "autocomplete" data attribute inside the jQuery UI autocomplete code.

HTML

<label for="tags">Tags: </label><input id="tags" />
<div id="wrapper"></div>

JavaScript

$('#tags').autocomplete({
    source: availableTags,
    search: function(event, ui) {
       // clear the existing result set
       $('#wrapper').empty();
    },
})
.data('autocomplete')._renderItem = function(ul, item) {
    return $('<div class="element"></div>')
        .data('item.autocomplete', item)
        .append('<a href="#">' + item.label+ '</a>')
        .appendTo($('#wrapper'));
    };

CSS& (to hide the normal container)

.ui-autocomplete {
    display:none !important;
}

You can customize each item by changing the markup inside the .append() method in the .data('autocomplete') function and you may want to look at the other autocomplete Events if you want to manipulate the <div id="wrapper"> search results further, for example clearing the list if the <input> acquires focus.

半透明的墙 2024-12-04 04:35:20

当您说远程源时,您是指数据库还是使用 iframe?

如果它是一个数据库,那么您正在从一些后端代码中检索。这是一个ajax请求示例

$.ajax({
    type: 'GET',
    url: 'path/to/server/code',
    dataType: 'jsonp',
    success: function(data) {
      //where you would work with the object
    },
    error: function(jqXHR, textStatus, errorThrown) {
        console.log(errorThrown);
    },
    jsonpCallback: function() {
        //your callback funciton
    }
});

When you say remote source do you mean a database or are you using an iframe?

If its a database then you are retrieving from some back end code. Here is an example ajax request

$.ajax({
    type: 'GET',
    url: 'path/to/server/code',
    dataType: 'jsonp',
    success: function(data) {
      //where you would work with the object
    },
    error: function(jqXHR, textStatus, errorThrown) {
        console.log(errorThrown);
    },
    jsonpCallback: function() {
        //your callback funciton
    }
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文