javascript - 使用 Jquery 自动完成处理 "No results"

标签 javascript jquery jquery-ui jquery-autocomplete jquery-ui-autocomplete

嘿,当用户当前查询没有结果时,我正在尝试返回消息!我查遍了整个网络,也有类似的场景,但我似乎无法让它与下面的代码一起工作! 谁能帮我解决这个问题,因为我正在拔头发试图修复它!

我需要保持使用键盘向下滚动结果的能力。

提前致谢。

HTML

   <div id="search_box">
     <form id="search_form" autocomplete="off" action="" onSubmit="return false;">
        <input type="text" id="suggestSearchBox" value="Search by City or Hotel Name" onClick="this.value='';" />
     </form>
   </div>

Javascript 注意:远程数据源称为“dataLocCodes”,它是一个 javascript 数组

// JavaScript Document
$(function() {
   $("#suggestSearchBox").focus().autocomplete(dataLocCodes, {
      max: 15,
      selectFirst: true,
      matchContains: true,
      formatItem: function(row, i, max){
      if (row.hotelId) {
         return row.accomName + ' - ' + row.city + ' - ' + row.country;
      } else {
         return row.city + ' - ' +    row.country;
      }
   }
}).result(
   function(event, row, formatted) {
      $("input#suggestSearchBox").val(row.city + ' - ' + row.country);
      var param = row.locparam;
      var encoded_url = param.replace(/ /gi,"+");
      encoded_url = encoded_url.replace(/&/gi,"amp");
      window.location.href = "hotels.html?location=" + encoded_url;
   });
});

最佳答案

有几种方法可以处理这个问题。您可以创建一个 source 方法,以便在过滤器的结果为空时添加“无结果”作为值,或者处理要显示的 response 事件您的用户界面中没有返回任何结果的消息。如果使用 source 方法,则添加一个选择处理程序以防止“No Result”成为值。

var availableTags = ['Abc', 'Def', 'ghi'];
$('#noresults').autocomplete({
    source: function (request, response) {
        var responses = $.ui.autocomplete.filter(availableTags, request.term);
        if (responses.length == 0) responses.push('No Result');
        response(responses);

    },
    response: function (event, ui)
    {
        if (ui.content.length == 0) {
            console.log('No results');
        }
    },
    select: function (event, ui) {
        // don't let no result get selected
        return (ui.item.value != 'No Result');
    }
});

关于javascript - 使用 Jquery 自动完成处理 "No results",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13181557/

相关文章:

c# - Angular Controller 未被调用

javascript - Chrome浏览器桌面通知

javascript - 手动调整元素大小不会触发 Chrome 中的突变观察器

html - 如何将div与滚动条居中对齐

javascript - jqgrid 的 groupingGroupBy 函数中可以更改哪些选项?

jquery - 将效果应用于页面中的多个 ID

javascript - Jquery 返回对象而不是选择器元素

javascript - 在 PHP 中创建可保存的表单?

Jquery UI slider ,中间为 0,背景从那里开始

javascript - 如何在 JQuery 自动完成中使用 JSon 数组