我有这个带有JSON结果的简单自动完成功能。假设没有值适合显示div(因此用户可以创建一个新实体),我无法理解它为什么不显示隐藏的div。
public JsonResult GetSubjectsName(string term)
{
var results = db.subjects.Where(s => term == null || s.SubjectName.ToLower().Contains(term.ToLower()))
.Select(x => new
{
id = x.SubjectId,
value = x.SubjectName
}).Distinct().ToList();
return Json(results, JsonRequestBehavior.AllowGet);
}
<div id="divId" style="background-color: red; height: 250px; display: none">
blabla
</div>
$("#term").autocomplete({
source: function (request, response) {
$.ajax({
url: "GetSubjectsName",
data: "{'term': '" + request.term + "' }",
dataType: 'json',
type: "POST",
contentType: "application/json; charset=utf-8",
dataFilter: function (data) { return data; },
success: function (data) {
response($.map(data, function (item) {
if (isNaN(item.id)) {
$("#divId").show("slow");
};
return {
label: item.value,
value: item.value,
id: item.id,
}
}));
}
});
},
minLength: 2,
});
答案 0 :(得分:1)
您将返回List
个主题,我认为这些主题都会id
。
因此,检查而不是if isNaN
可以检查length
: -
success: function(data) {
if (!data.length) {
$("#divId").show("slow");
} else {
response($.map(data, function(item) {
return {
label: item.value,
value: item.value,
id: item.id,
}
}));
}
}