如何在自动完成的每一行中添加额外信息

时间:2017-11-14 11:15:56

标签: javascript jquery autocomplete

我正在自动完成来自世界各地的场地,并且工作正常,但现在我希望该特定场地的地址位于下一行的场地名称。

如果我的自动填充功能正在将地址名称读取为ABCD,则在ABCD下面应该是该地点的地址。我可以返回场地的地址,但不知道如何把它放在这里。

我的javaScript

$("#venueName").autocomplete({
    minLength: 3,
    source: function(request, response) {

    var city_lat = $('#city_lat').val();
    var city_lon = $('#city_lon').val();

    request.call = "auto_poi_ugc";
    request.cityid = $('#eventCityId').val();
    request.lat = city_lat;
    request.lon = city_lon;

    setTimeout(function() {
      ajax_req = $.ajax({
        url: "/ajaxcalls",
        dataType: "json",
        data: request,
        success: function( data ) {    
            data.splice(venue_limit,data.length);
            response( data );
        }
      });
      }, 700);
    },
    select: function(event, ui) {

        if(ui.item.value == "Loading..."){
          return false;
        }
        if(ajax_req != undefined)
        {
            ajax_req.abort();
        }
        if(ui.item.value != '')
        {
            $('#venue_latitude').val(ui.item.latitude);
            $('#venue_longitude').val(ui.item.longitude);
            $('#primus_id').val(ui.item.id);
            $('#event_venue_add').val(ui.item.add);
        }
     },
    search: function(event, ui) {
        if($(this).hasClass('error-border')){
            $(this).removeClass('error-border');
        }
    },
});

1 个答案:

答案 0 :(得分:1)

您可以通过在其中添加自动填充功能来实现它。

.autocomplete( "instance" )._renderItem = function( ul, item ) {
    if(item.add == undefined){
        item.add = "";
    }
    return $( "<li>" ).append( "<div>" + item.label + "</div><div class='v_address_auto'>" + item.add + "</div>" ).appendTo( ul );
};

http://jqueryui.com/autocomplete/#custom-data

您的代码将变为这样

$("#venueName").autocomplete({
minLength: 3,
source: function(request, response) {

var city_lat = $('#city_lat').val();
var city_lon = $('#city_lon').val();

request.call = "auto_poi_ugc";
request.cityid = $('#eventCityId').val();
request.lat = city_lat;
request.lon = city_lon;

setTimeout(function() {
  ajax_req = $.ajax({
    url: "/ajaxcalls",
    dataType: "json",
    data: request,
    success: function( data ) {    
        data.splice(venue_limit,data.length);
        response( data );
    }
  });
  }, 700);
},
select: function(event, ui) {

    if(ui.item.value == "Loading..."){
      return false;
    }
    if(ajax_req != undefined)
    {
        ajax_req.abort();
    }
    if(ui.item.value != '')
    {
        $('#venue_latitude').val(ui.item.latitude);
        $('#venue_longitude').val(ui.item.longitude);
        $('#primus_id').val(ui.item.id);
        $('#event_venue_add').val(ui.item.add);
    }
 },
search: function(event, ui) {
    if($(this).hasClass('error-border')){
        $(this).removeClass('error-border');
    }
},
}).autocomplete( "instance" )._renderItem = function( ul, item ) {
    if(item.add == undefined){
        item.add = "";
    }
    return $( "<li>" ).append( "<div>" + item.label + "</div><div class='v_address_auto'>" + item.add + "</div>" ).appendTo( ul );
};