jquery自动完成以显示由分号分隔的2个值

时间:2013-06-17 15:46:16

标签: jquery ajax codeigniter autocomplete

我有一个文本字段,其中名称和地址的自动填充建议应以分号(;)分隔。 我正在使用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");  
    }
});

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

2 个答案:

答案 0 :(得分: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);
        });
    }
}); 

这项工作。

答案 1 :(得分:0)

使用以下代码更改打开:

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

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

可能会帮助您Autocompleter