2011-01-19 31 views
4

新手编码器在这里。我有一个jQuery自动完成搜索栏,通过本地json数组搜索。当找不到匹配项时,我想返回一个字符串,表示“找不到”。jQuery UI自动完成:当没有搜索匹配发生时返回“没有找到”

我已经试过if语句里面$ .grep但至今没有奏效:

$("#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

想知道这一点。 – Koraktor 2011-03-21 07:19:48

回答

-1

你可以使用_renderItem来呈现你想要的结果。你只需要在这里检查结果是否为空,然后做你想要的回报。

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

如果没有任何结果,“_renderItem”永远不会被触发。 – 2011-05-09 23:52:44

0

我想你想测试“或”(||)位置:

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确实有一个长度。

相关问题