我有一个斗争,显示所有可能的自动完成行。我用db来存储所有的行。现在我用这个脚本:
<script type="text/javascript">
$(document).ready(function () {
$("#Industry").autocomplete({
source: function (request, response) {
$.ajax({
url: "/Employee/SuggestWorkExperienceIndustry",
type: "POST",
dataType: "json",
data: { Prefix: request.term },
success: function (data) {
response($.map(data, function (item) {
return { label: item.Industry, value: item.Industry };
}))
}
})
},
messages: {
noResults: "failure", results: ""
}
});
});
</script> 控制器部分:
[HttpPost]
public JsonResult SuggestWorkExperienceIndustry(string Prefix)
{
using (var db = new HRMEntities())
{
var industryList = db.WorkExperienceIndustries.ToList();
var industry = (from n in industryList
where n.Industry.ToLower().Contains(Prefix.ToLower())
select new { n.Industry });
return Json(industry, JsonRequestBehavior.AllowGet);
}
}它工作得很好,但当用户单击字段时,我不知道如何从db中获取所有行。
发布于 2016-05-26 13:37:16
在autocomplete小部件属性中有一个minLength,它的默认设置为1。这意味着在文本框开始请求数据之前,需要在文本框中输入至少一个字符。将其设置为0,它应该立即加载整个列表:
minLength: 0但要确保这是您真正想要的行为,因为它确实会加载您的所有项目。可能不是很友好的用户。
更新。似乎没有内置的方式来触发搜索的焦点,不过。但是手动触发它真的很简单:
$("#Industry").autocomplete({
source: ...
messages: ...
minLength: 0
}).focus(function () {
$(this).autocomplete("search");
});https://stackoverflow.com/questions/37462029
复制相似问题