新手编码器在这里。我有一个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);
}
}));
},
感谢您的帮助! :)
答案 0 :(得分:0)
我想你想在这里测试'OR'(||
):
if (matcher.test(value.value).length && matcher.test(value.nickname).length == 0) {
return not_found;
}
仅当value.value
和value.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";
};