0

JQuery 有一个很酷的自动完成功能。我想要的是,如果自动完成中没有匹配的条目(例如 zadasdasda 中的用户类型)来向用户标记这一点,因为用户只能在这个特定字段中输入与数据库中一组值中的值匹配的内容。在以某种方式说只使用选项列表之前,有太多可能的条目(> 1,000)。我只想检查在我自己编写回调之前在 JQuery 中没有任何东西可以执行此操作。我找不到任何东西只想仔细检查。

谢谢

4

2 回答 2

3

也许这会有所帮助。如果我了解您的需求,这是一种方法。

就我而言,自动完成功能通过 Ajax 从服务器获取数据。

$("#myselect").autocomplete({
  source: function(request, response) {
    $.ajax({
      url: searchUrl,
      dataType: "json",
      data: request,                    
      success: function (data) {
        // No matching result
        if (data.length == 0) {
          alert('No entries found!');
          $("#myselect").autocomplete("close");
        }
        else {
          response(data);
        }
      }});
    },
  dataType: "json",
  autoFill: false,      
  scroll: false,
  minLength: 2,
  cache: false,
  width: 100,
  delay: 500,           
  select: function(event, ui) { 
    //eventuallydosomething(ui.item.value);
    $("#myselect").autocomplete("close");
  } 
});

您感兴趣的部分是从服务器返回数据时:

  success: function (data) {
      // If we get no matching result
      if (data.length == 0) {
        alert('No entries found!');
        $("#myselect").autocomplete("close");
      }
于 2012-09-05T11:44:16.267 回答
0

可以用autocomplete._response自己的函数替换,然后调用默认的jQueryUI函数

var __response = $.ui.autocomplete.prototype._response;
$.ui.autocomplete.prototype._response = function(content) {
    __response.apply(this, [content]);
    this.element.trigger("autocompletesearchcomplete", [content]);
};

然后将事件处理程序绑定到 autocompletesearchcomplete 事件(内容是搜索的结果,一个数组):

$("input").bind("autocompletesearchcomplete", function(event, contents) {
    if(contents.length<1){
     $("#results").html("No Entries Found");
    }
   else{
      $("#results").html("");
   }
});

演示

示例的来源

于 2012-09-05T11:32:16.110 回答