jQuery UI自动完成:当没有搜索匹配时返回“找不到”

时间:2011-01-19 23:50:21

标签: jquery search

新手编码器在这里。我有一个jQuery自动完成的搜索栏,搜索本地json数组。如果找不到匹配项,我想返回一个字符串,上面写着“找不到任何东西。”

我在$ .grep中尝试过if语句,但到目前为止还没有任何工作:

$("#div_name").autocomplete({
  appendTo: ".custom-autocomplete",
  source: function (request, response) {
  var matcher = new RegExp($.ui.autocomplete.escapeRegex(request.term), "i");
  response($.grep(array, function(value) {

  var not_found = 'Nothing found.';

     if (matcher.test(value.value).length && matcher.test(value.nickname).length == 0) {
       return not_found;
     }
     else {
    return matcher.test(value.value)
       || matcher.test(value.nickname);
  }

  }));
},

感谢您的帮助! :)

2 个答案:

答案 0 :(得分:0)

我想你想在这里测试'OR'(||):

if (matcher.test(value.value).length && matcher.test(value.nickname).length == 0) {
   return not_found;
 }
仅当value.valuevalue.nickname都没有值时,

才会成立。 (你没有显示你的数据,所以我猜这里)

 if (matcher.test(value.value).length || matcher.test(value.nickname).length == 0) {
   return not_found;
 }
如果其中任何一个不成立,

将匹配,如果value.value确实有长度,则会立即退出。

答案 1 :(得分:-1)

您可以使用_renderItem以您想要的方式呈现结果。你只需要在这里检查结果是否为空并进行你想要的回报。

$("#div_name").autocomplete({
    ...
}).data("autocomplete")._renderItem = function( ul, item ) {
    return "how and where you want to render results";
};