我有一个Html.Textbox,我允许用户输入客户名称。一旦它们达到3个或更多字符,我就会调用自动完成功能,该功能会在下拉列表中返回客户列表。当他们做出选择时,我想做另一个ajax调用,它会返回一个新视图。我的问题是当我添加第二个调用时,自动完成中的数据被删除。这就是我到目前为止所做的:
$("#CustomerSearch_FullName").autocomplete({
minLength: 3,
fontSize: '10px',
source: function (request, response) {
$.ajax({
url: '@Url.Action("CustomerNameAutoComplete", "Customer")',
async: false,
data: { searchstring: $.trim(request.term) },
success: function (data) {
response($.map(data, function (item) {
$('#CustomerIdDisplay').val(item.id);
$('#customer-select').val(item.id);
$('#Order_Customer_FirstName').val(item.firstname);
$('#Order_Customer_Email').val(item.email);
return { label: item.choice, id: item.id };
}));
},
});
},
select: function (event, ui) {
id = ui.item.id;
$.ajax ({
url: '@Url.Action("Create", "Order")',
data: { customerId: id }
});
答案 0 :(得分:1)
您只需要在select语句中添加return false:
,
select: function (event, ui) {
id = ui.item.id;
$.ajax ({
url: '@Url.Action("Create", "Order")',
data: { customerId: id }
});
return false;
}
自动完成的默认操作'选择'是使用从自动完成框中选择的任何内容设置文本框值,如果您尚未准备好设置文本框,因为您想要根据选择执行另一个调用,则必须添加return false以防止默认行为。完成第二次通话后,您必须根据结果将文本框设置为您想要的内容。