我在我正在创建的页面上使用jquery-ui自动完成.在同一页面上,我发生了一些ajax事件.在其他ajax活动期间,我正在向我的页面添加叠加层,以便网站上的所有链接都不再可供用户点击.我不希望在自动完成期间发生这种情况.
自动完成:
$(function() {
$( "#search_input" ).autocomplete({
source: '/search_autocomplete/',});
});
Run Code Online (Sandbox Code Playgroud)
AJAX:
$.ajax({
url: "/ajax_login/",
login_user: $("#login_user").val(),
password: $("#login_password").val(),
});
Run Code Online (Sandbox Code Playgroud)
ajaxStart:
$("#loading_gif").ajaxStart(function() {
$("#overlay").show();
$(this).show();
});
Run Code Online (Sandbox Code Playgroud)
防止在没有必要的ajax事件期间执行ajaxstart函数.我加
global:false,
Run Code Online (Sandbox Code Playgroud)
到相应的ajaxfunctions.如何在不更改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/'
});
Run Code Online (Sandbox Code Playgroud)
这种长手法的优点是
如果您想在大多数时间但现在一直以某种$.ajax()方式工作,那么您可能不应该更改其默认行为。
我建议创建一个将 ajax 请求包装在一个函数中的函数,该函数在适当的时间启用和禁用覆盖。在您想要使用叠加层的地方调用此函数,并使用 plain$.ajax()进行自动完成。