Jquery自动完成不显示结果

jquery autocomplete does not shows result

本文关键字:显示 结果 Jquery      更新时间:2023-09-26

我有一个文本类型的输入,我附加了自动完成:

javascript:

$("#descSearchBox").keyup(function(e) {
//$("#ui-id-1").addClass("dropdown-menu").removeClass('ui-autocomplete ui-front ui-menu ui-widget ui-widget-content ui-corner-all');
$(".ui-autocomplete").removeClass("ui-autocomplete ui-front ui-menu ui-widget ui-widget-content ui-corner-all")
    .addClass('dropdown-menu');
$.post("/controls/DistControl.php", {
        action: 'descAutocomplete',
        description: $(this).val(),
        myDistribution: $("#cbMyDistributions").is(":checked")
    }, function(data) {
        data = $.parseJSON(data);
        $( "#titleSearchBox" ).val('');
        console.log(data);
        $( "#descSearchBox" ).autocomplete({
            source: data.result.titles,
            select: function( event, ui ) {
                $("#titleSearchBox").val(ui.item.label);
                distributionTableUpdate();
            }
        });
    }
);
});

,这里是PHP脚本发送请求返回:

function descAutocomplete() {
$where['LIKE'] = [ "description" => $_POST['description'] ];
if( $_POST["myDistribution"] === "true" )
    $where["user_id[=]"] = $_SESSION['user_id'];
$dists = DistributionModel::getAll( $where, 10, 0, 'title', 'ASC', [ 'title' ] );
$titles = [];
foreach($dists as $d) {
    $titles[] = $d->get('title');
}
$response = new ResponseModel(ResponseModel::$TYPE_INFO, 'Description Autocomplete', [ 'titles' => $titles ]);
echo $response->encode();
}

事情是我得到的结果,例如,我只是在搜索中输入'e',我得到的数组有4个元素,但它什么也不显示或只显示最后一个。为什么要这么做呢?为什么它不能显示所有的结果?

尝试使用Like

$("#name").autocomplete({
  source: function( request, response ) {
    $.ajax({
      url: "URL",
      dataType: "json",
      data: {term: request.term},
      success: function(data) {
        response($.map(data, function(item) {
          return {
            label: item.state,
            id: item.id
          };
        }));
      }
    });
  },
  select: function(event, ui) {
    $('#id').val(ui.item.id);
  }
});