首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自定义jquery自动完成结果

自定义jquery自动完成结果
EN

Stack Overflow用户
提问于 2011-06-04 20:40:16
回答 3查看 887关注 0票数 6

我正在对远程数据源使用jQuery自动完成

代码语言:javascript
复制
    $( "input#searchbar" ).autocomplete({
        source: function( request, response ) {
            $.ajax({type: "post",
            mode: "abort",
            dataType: 'json',
            url: 'index.php/ajax/autosuggest',
            data: { term: $("#searchbar").val()},
            success: function(data) {

                response(data);
            }
        });
    },
    select: function(e, ui) {
        //Refresh pros
        if (map){
            mouseUpOnTheMap();
        }
    }
});

它真的工作得很好。当我输入"a“时,会出现一个活动列表(从数据库获取),其中列出了以它们开头的活动。我想做的是在结果中添加一个自定义参数(活动的ID )。

因为当用户稍后选择一个活动时,我将不得不“重做”一个sql搜索来获得该活动的ID……

那么有没有一种方法可以在自动完成返回的JSON中包含活动id呢?

谢谢

EN

回答 3

Stack Overflow用户

发布于 2011-06-04 21:29:01

如果您的index.php/ajax/autosuggest页面返回了一个带有两个键"label“和"value”(而不是字符串数组)的JSON对象数组,则带有"label“键的jQuery UI Autocomplete插件将显示在自动完成列表中,但实际上给出的是在select事件中选择的JSON对象。然后,您可以引用对象的值。

代码语言:javascript
复制
$( "input#searchbar" ).autocomplete({
        source: function( request, response ) {
            $.ajax({type: "post",
            mode: "abort",
            dataType: 'json',
            url: 'index.php/ajax/autosuggest',
            data: { term: $("#searchbar").val()},
            success: function(data) {
                //data assumes [{label: "result 1", value: 1}, {label: "result 2", value: 2}];
                response(data);
            }
        });
    },
    select: function(e, ui) {
        var selectedItem = ui.item;
        var id = selectedItem.value;
        var label = selectedItem.label;

        //Refresh pros
        if (map){
            mouseUpOnTheMap();
        }
    }
});

我还没有测试过thist,只是在这里找到的:http://www.petefreitag.com/item/756.cfm

票数 3
EN

Stack Overflow用户

发布于 2011-06-23 06:57:30

Wesley描述的方式也是我们目前使用的方式。

通过在我们的JSON对象中同时返回labelid,我们能够以我们想要的方式获取id来处理它(在我们的例子中,将它存储在一个隐藏的输入中),同时标签被用来向我们的用户显示选择了哪条记录。

基本示例:http://jsfiddle.net/NLK5p/4/

票数 1
EN

Stack Overflow用户

发布于 2011-06-23 22:04:02

您使用的是哪个数据源?我强烈建议freebase它是一个超过1200万语音的免费数据库,它为最杂乱的领域(工作,体育,演员,电影或任何你想要的)的自我暗示(包括js函数)提供了一个web服务。并不是每个人都知道它,但是google去年买下了这个项目(它仍然是免费的),所以它应该是一个很有前途的数据源web服务。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6236786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档