我正在创建的页面上使用 jquery-ui 自动完成功能。在同一页面上,我正在进行一些 ajax 事件。在其他 ajax 事件期间,我向页面添加了覆盖层,以便用户不再可以单击网站上的所有链接。我不希望在自动完成期间发生这种情况。
自动完成:
$(function() {
$( "#search_input" ).autocomplete({
source: '/search_autocomplete/',});
});
ajax:
$.ajax({
url: "/ajax_login/",
login_user: $("#login_user").val(),
password: $("#login_password").val(),
});
ajax启动:
$("#loading_gif").ajaxStart(function() {
$("#overlay").show();
$(this).show();
});
防止 ajaxstart 函数在不需要的 ajax 事件期间执行。我补充一下
global:false,
对应的ajax函数。如何在自动完成过程中执行类似的操作而不更改 jquery-ui 源?
最佳答案
为此,您必须省略 source
的简写调用,并像这样更改调用。
$('#search_input').autocomplete({
source: function (request, response) {
var DTO = { "term": request.term };
//var DTO = { "term": $('#search_input').val() };
$.ajax({
data: DTO,
global: false,
type: 'GET',
url: '/search_autocomplete/',
success: function (jobNumbers) {
//var formattedNumbers = $.map(jobNumbersObject, function (item) {
// return {
// label: item.JobName,
// value: item.JobID
// }
//});
return response(jobNumbers);
}
});
}
//source: '/search_autocomplete/'
});
这种长手方法的优点是
- 您可以传递多个参数。此外,参数名称不必是 term。
- 简写表示法需要一个字符串数组。在这里您也可以返回一个对象数组。
关于jquery-ui - 防止 $.ajaxStart() 在 jquery-ui 自动完成期间执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10080889/