jquery-ui - 防止 $.ajaxStart() 在 jquery-ui 自动完成期间执行

标签 jquery-ui jquery

我正在创建的页面上使用 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/'
});

这种长手方法的优点是

  1. 您可以传递多个参数。此外,参数名称不必是 term。
  2. 简写表示法需要一个字符串数组。在这里您也可以返回一个对象数组。

关于jquery-ui - 防止 $.ajaxStart() 在 jquery-ui 自动完成期间执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10080889/

相关文章:

jquery - 模式对话框不会在页面加载时隐藏

javascript - jquery-ui switchClass() 没有按预期工作

javascript - 缩放、拖动和旋转时的图像定位

jQuery 用户界面 : Datepicker set year range dropdown to 100 years

jquery $(this).prev (".class") 不工作

jquery - getJSON 未读取 JSON 数组

jquery-ui - jQuery UI DropShadow - 如何在 div 周围放置阴影

javascript - html 选择列表 - 当大小为 10 时显示所选值

jquery - 简单的DIV悬停动画

javascript - 仅使用 javascript 创建径向菜单