2013-07-16 31 views
6

我正在實施ajaxStart事件以顯示模式說「加載」。ajaxStart取消jQuery自動完成

但是,最大的問題是這種與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');  
}); 

我如何禁用此模式爲自動完成,或在某種程度上避免這個問題?

回答

2

如果您正在使用$().dialog()所做的只是顯示一條消息,顯示「加載」,我會推薦使用其他方法來顯示該消息。

jQueryUI的對話框()函數是一個有點矯枉過正只顯示消息 「加載」 時,你可以做這樣的事情:

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(); 
}); 
1

如果有人發現這一點(就像我做的那樣),並且真的想知道爲什麼這不起作用,這是因爲當您使用對話框(「打開」)時,對話框始終將焦點從文本框中移開。

+0

感謝提示:) – rafuru