0

我有一个文本字段,其中名称和地址的自动完成建议应以分号(;)分隔。我正在使用 codeigniter,以下是 jquery 代码:

//to retrieve the name and address values
var business=new Object();
$.ajax({
    'async': false,
    'global': false,
    'url': base_url + '/controller_name/method1',
    'dataType': "json",
    'success': function (data) {
        $.each(data, function(key, value){
            bb = value.b_name+'; '+value.b_add;
            if(key==0)
                bb_json = JSON.stringify(bb);
            else
                bb_json += JSON.stringify(bb);
        });     
    }
});

上面的代码工作正常,并将所有名称和地址保存在 bb_json 中。现在我希望它出现在自动完成建议列表中。我为此编写的代码如下 -

$('#b_name').autocomplete({
    source      : bb_json,
    max         : 5,
    minLength   : 2,
    open        : function(event, ui) {
        $('ul.ui-autocomplete').addClass('f-dropdown').attr('id', 'bb_ul');
        $(this).autocomplete("widget");  
    }
});

但这不起作用。请问有人可以帮忙吗???

4

2 回答 2

1

您必须在 $ajax().success() 回调中生成一个有效的 javascript 数组:

$.ajax({
    'async': false,
    'global': false,
    'url': base_url + '/controller_name/method1',
    'dataType': "json",
    'success': function (data) {
        //data = [{b_name:"foo1",b_add:"bar1"},{b_name:"foo2",b_add:"bar2"},{b_name:"foo3",b_add:"bar3"}]
        bb_json = []

        $.each(data, function(key, value){
            bb = value.b_name+'; '+value.b_add;
            bb_json.push(bb);
        });
    }
}); 

这项工作。

于 2013-06-18T04:29:31.113 回答
0

使用以下代码更改打开:

select: function( event, ui ) {
...
}

还删除了 open 函数中的自动完成器

可能这会帮助

于 2013-06-18T04:19:36.033 回答