6

我正在实施该ajaxStart事件以显示“正在加载”的模式。

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

我的自动完成是:

$("#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;
    }
});

我正在处理 Ajax 事件:

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

$("#dlgWait").ajaxComplete(function(){
    $("#dlgWait").dialog('close');    
});

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

4

2 回答 2

2

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

jQueryUI dialog() 函数有点矫枉过正,只是在您可以执行以下操作时显示消息“正在加载”:

HTML

<div class="dlgLoading" id="dlgWait">Loading...</div>

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;
}

JS

$('#ajax').ajaxStart(function(){
    $('#dlgWait').show();
});
$('#ajax').ajaxComplete(function(){
    $('#dlgWait').hide();
});
于 2013-07-17T11:06:36.773 回答
1

如果有人发现这个(就像我一样)并且真的想知道为什么这不起作用,那是因为当您使用对话框(“打开”)时,对话框总是将焦点从文本框移开。

于 2013-08-28T11:47:44.760 回答