Kev*_*ven 22 javascript jquery jquery-ui autocomplete jquery-autocomplete
如果没有结果,我试图在下拉菜单中显示"无结果"消息.因此,例如,如果我在文本字段中键入"ABCD",并且没有匹配的实体,则显示消息"无结果".将显示.
在通过stackoverflow查看完成此操作的各种不同方法并尝试其中一些之后,我仍然无法使其工作.
如果没有找到结果,如何在下拉菜单中添加"无结果"消息?
jQuery的:
$element.autocomplete({
source: function (request, response) {
$.ajax({
url: thUrl + thQS,
type: "get",
dataType: "json",
cache: false,
data: {
featureClass: "P",
style: "full",
maxRows: 12
},
success: function (data) {
response($.map(data, function (item) {
if (data.indexOf(item) === -1) {
return { label: "No Results." }
} else {
return {
label: item.Company + " (" + item.Symbol + ")",
value: item.Company
}
}
}));
}
});
},
minLength: that.options.minLength,
select: function (event, ui) {
reRenderGrid();
}
});
Run Code Online (Sandbox Code Playgroud)
我尝试使用以下内容添加if()语句,但这不起作用.
if (data.length === 0) {
// Do logic for empty result.
}
Run Code Online (Sandbox Code Playgroud)
如果我执行以下操作,我可以使用"无结果"文本覆盖第一个条目...
if (data.indexOf(item) === 0) {
return {
label: "No Results."
}
Run Code Online (Sandbox Code Playgroud)
......但如果我data.indexOf(item) === -1
没有设置任何显示.
我刚刚尝试了以下内容,当没有数据时,它进入循环,但是,"No Results"没有显示在菜单中:
success: function (data) {
response($.map(data, function (item) {
return {
label: item.Company + " (" + item.Symbol + ")",
value: item.Company
}
}));
if (data.length === 0) {
label: "No Results."
}
}
Run Code Online (Sandbox Code Playgroud)
我还尝试使用Andrew Whitaker的下面例子,但没有运气:
ANDREW WHITACKER'S FIDDLE:http://jsfiddle.net/J5rVP/128/
消息来源:http://blog.andrewawhitaker.com/2012/10/08/jqueryui-autocomplete-1-9/
Tre*_*vor 27
if (!ui.content.length) {
var noResult = { value:"",label:"No results found" };
ui.content.push(noResult);
//$("#message").text("No results found");
}
Run Code Online (Sandbox Code Playgroud)
小提琴
http://jsfiddle.net/J5rVP/129/
更新
紧接着将代码放在自动完成设置的末尾 select: function (event, ui) {..}
..........
minLength: that.options.minLength,
select: function (event, ui) {
reRenderGrid();
}, //HERE - make sure to add the comma after your select
response: function(event, ui) {
if (!ui.content.length) {
var noResult = { value:"",label:"No results found" };
ui.content.push(noResult);
}
}
});
Run Code Online (Sandbox Code Playgroud)
nee*_*meg 23
修改这样的函数以检查数据的长度.
success: function (data) {
if(!data.length){
var result = [
{
label: 'No matches found',
value: response.term
}
];
response(result);
}
else{
// normal response
response($.map(data, function (item) {
return {
label: item.CompanyName + " (" + item.SymbolName + ")",
value: item.CompanyName
}
}));
}
}
Run Code Online (Sandbox Code Playgroud)
我的回答与@neelmeg 和@Trever 几乎相同,但我添加了额外的检查,因此用户将无法选择“无结果”消息:
$(".my-textbox").autocomplete({
minLength: 2,
open: function () { $('.ui-autocomplete').css('z-index', 50); },
source: function (request, response) {
$.ajax({
url: "/some-url",
type: "POST",
dataType: "json",
data: { prefix: request.term, __RequestVerificationToken: token },
success: function (data) {
if (!data.length) {
var result = [{ label: "no results", value: response.term }];
response(result);
}
else {
response($.map(data, function (item) {
return { label: item.someLabel, value: item.someValue };
}))
}
}
})
},
select: function (event, ui) {
var label = ui.item.label;
if (label === "no results") {
// this prevents "no results" from being selected
event.preventDefault();
}
else {
/* do something with the selected result */
var url = "some-url"
window.location.href = url;
}
}
});
Run Code Online (Sandbox Code Playgroud)