ajaxStart取消jQuery自动完成

raf*_*uru 6 javascript jquery jquery-ui

我正在实施该ajaxStart事件以显示模式说"加载".

但是,最大的问题是这种模式与jQuery自动完成冲突,只是没有显示自动完成的结果列表.

我的自动填充功能是:

$("#txtInput").autocomplete({
    minLength: 3,
    source: "autocomplete" , 
    multiple: true,
    select: function( event, ui ) {
        $( "#cie" ).val( ui.item.label );
        $("#id").val(ui.item.id);
        $("#addItem").prop('disabled', false);
        return false;
    }
});
Run Code Online (Sandbox Code Playgroud)

我用这个处理Ajax事件:

$("#dlgWait").ajaxStart(function(){                    
    $("#dlgWait").dialog('open');    
});

$("#dlgWait").ajaxComplete(function(){
    $("#dlgWait").dialog('close');    
});
Run Code Online (Sandbox Code Playgroud)

如何禁用此模式以进行自动完成或以某种方式避免此问题?

Jim*_*ery 2

如果您要做的只是$().dialog()显示一条消息“正在加载”,我建议使用另一种方法来显示该消息。

当您可以执行以下操作时,jQueryUIdialog() 函数只是为了显示消息“Loading”就有点过分了:

超文本标记语言

<div class="dlgLoading" id="dlgWait">Loading...</div>
Run Code Online (Sandbox Code Playgroud)

CSS

div.dlgLoading {
    position: absolute;
    top: 0px;
    bottom: 0px;
    left: 0px;
    right: 0px;
    background-color:rgba(255,255,255,0.95);
    text-align: center;
    display: none;
    z-index: 100;
}
Run Code Online (Sandbox Code Playgroud)

JS

$('#ajax').ajaxStart(function(){
    $('#dlgWait').show();
});
$('#ajax').ajaxComplete(function(){
    $('#dlgWait').hide();
});
Run Code Online (Sandbox Code Playgroud)