我正在使用带有EF Code First的ASP.NET MVC3。我之前没有使用过jQuery。我想将自动完成功能添加到绑定到我的模型的下拉列表中。下拉列表存储ID,并显示值。
那么,如何连接jQuery UI自动完成小部件以在用户输入时显示值但存储ID?
我在一个视图中也需要多个自动完成下拉列表。
我看到了这个插件:http://harvesthq.github.com/chosen/但我不确定是否要在项目中添加更多“东西”。有没有办法用jQuery UI做到这一点?
答案 0 :(得分:4)
<强>更新强>
我刚发布了一个示例项目,展示了GitHub上文本框中的jQueryUI自动完成功能 https://github.com/alfalfastrange/jQueryAutocompleteSample
我将它与常规MVC TextBox一样使用
@Html.TextBoxFor(model => model.MainBranch, new {id = "SearchField", @class = "ui-widget TextField_220" })
这是我的Ajax调用的剪辑
它最初检查其内部缓存的搜索项目,如果没有找到它会触发Ajax请求到我的控制器操作来检索匹配的记录
$("#SearchField").autocomplete({
source: function (request, response) {
var term = request.term;
if (term in entityCache) {
response(entityCache[term]);
return;
}
if (entitiesXhr != null) {
entitiesXhr.abort();
}
$.ajax({
url: actionUrl,
data: request,
type: "GET",
contentType: "application/json; charset=utf-8",
timeout: 10000,
dataType: "json",
success: function (data) {
entityCache[term] = term;
response($.map(data, function (item) {
return { label: item.SchoolName, value: item.EntityName, id: item.EntityID, code: item.EntityCode };
}));
}
});
},
minLength: 3,
select: function (event, result) {
var id = result.item.id;
var code = result.item.code;
getEntityXhr(id, code);
}
});
这不是所有的代码,但你应该能够在这里看到如何搜索缓存,然后进行Ajax调用,然后对响应做了什么。我有select
部分,因此我可以使用所选值
答案 1 :(得分:0)
这就是我所做的FWIW。
$(document).ready(function () {
$('#CustomerByName').autocomplete(
{
source: function (request, response) {
$.ajax(
{
url: "/Cases/FindByName", type: "GET", dataType: "json",
data: { searchText: request.term, maxResults: 10 },
contentType: "application/json; charset=utf-8",
success: function (data) {
response($.map(data, function (item) {
return {
label: item.CustomerName,
value: item.CustomerName,
id: item.CustomerID
}
})
);
},
});
},
select: function (event, ui) {
$('#CustomerID').val(ui.item.id);
},
minLength: 1
});
});
效果很好!
答案 2 :(得分:-1)