我正在使用Jquery UI自动完成功能,它很好用,但我正试图解决这个问题并希望得到一些帮助。自动完成在一个包含ASP面板的文本框中,表单上Enter键的默认行为是提交表单。如果用户在自动完成文本框中输入内容并按下Enter键,则希望自动完成Web服务在按下Enter键时触发并返回结果。我在网上读到应该处理自动完成的Keypress事件,但我一直在尝试着如何调用按键按下时的自动完成功能,但不确定如何在Keypress事件中调用自动完成函数的正确语法。我在下面展示了我的代码,如果有人知道如何实现,请在代码中给出示例,因为我在调用按键按下时的函数方面遇到了困难,非常感谢您的帮助!以下是代码:
//Attach autocomplete to txtCity so user can lookup SPLCS by cities
var city;
var txtCity = $("[id$=txtAutoCity]")
$(txtCity).autocomplete({
source: function (request, response) {
request.term = request.term.replace(/[^a-zA-Z\s]+/, "")
$.ajax({
url: "../../Services.asmx/GetOfficesByCity",
data: "{ 'city': '" + request.term + "' }",
dataType: "json",
type: "POST",
contentType: "application/json; charset=utf-8",
dataFilter: function (data) { return data; },
success: function (data) {
response($.map(data.d, function (item) {
if (data.d != undefined) {
return {
value: item.Display,
result: item.CommaDelimited
}
}
else {
return true;
}
}))
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(errorThrown);
}
});
},
autoFill: false,
minLength: 2,
delay: 800,
mustMatch: false,
selecFirst: false,
select: function (event, ui) {
var selectedObj = ui.item;
if (ui.item) {
city = ui.item.result.split(',')[0];
$("[id$=txtCity]").val(ui.item.result.split(',')[0]);
$("[id$=txtOffice]").val(ui.item.result.split(',')[1]);
$("[id$=txtDistrict]").val(ui.item.result.split(',')[2]);
}
},
// Any action to be performed once the auto complete list closes
close: function (event) {
}
}).keypress(function (e) {
if (e.keyCode === 13) {
//How to cancel default submit behaviour of form and call this
//autocomplete function to fire??
e.preventDefault();
//my_search_function($(txtCity).val())
}
});