我有一个jquery自动完成下拉列表,该列表由ajax调用填充。当用户开始键入时,我要查找的预期行为是要显示的默认加载图形,它可以在ui-autocomplete-loading
css类中找到。它似乎真的存在,因为当我使用警告框阻止UI线程时,我可以看到微调器出现。
一旦我删除了警告框并让它正常运行,下拉UI就会在它填充时锁定,从不显示微调器。
以下是我自动完成功能的实现:
function SetupAllMFGsAutocomplete(source, inputObjectTextField) {
var datafromServer = source;
$(inputObjectTextField).val(savedUserInputValue);
var e = jQuery.Event("keydown");
$(inputObjectTextField).trigger('focus').attr('value', savedUserInputValue).trigger(e);
$(inputObjectTextField).each(function () {
// Setup autocomplete
$(this).autocomplete({
// Override the source function so we can perform the search by value instead of label
source: function (request, response) {
var matcher = new RegExp($.ui.autocomplete.escapeRegex(request.term), "i");
var results = $.grep(datafromServer, function (value) {
return matcher.test(value.value);
});
if (results.length == 0) {
results = ['No Matches Found'];
}
response(results);
},
select: function (event, ui) {
if (ui.item.label === 'No Matches Found') {
event.preventDefault();
}
else {
event.preventDefault();
$(inputObjectTextField).val(ui.item.label);
// Set the input's value to the label instead
$(this).val(ui.item.label);
// Add a modelid attribute to store the selected model's id for saving
$(this).attr("modelid", ui.item.id);
if ($(this).attr("id") != "ModelXlateTextBox")
Save($(this).attr("id"), $(this));
}
},
focus: function (event, ui) {
if (ui.item.label === 'No Matches Found') {
event.preventDefault();
}
}
})
});
}
我应该以不同方式实施autocomplete
功能吗?