2013-07-16 17 views
6

Ich implementiere das ajaxStart-Ereignis, um ein modales Sprichwort "loading" anzuzeigen.ajaxStart bricht die jQuery-Autovervollständigung ab

Aber das große Problem ist diese modale Konflikte mit jQuery Autocomplete, zeigt nur nicht die Liste der Ergebnisse auf Autocomplete.

Mein Autocomplete ist:

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

Und ich bin Umgang mit Ajax Veranstaltungen mit diesem:

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

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

Wie ich diese modal für die automatische Vervollständigung deaktivieren kann oder irgendwie dieses Problem vermeiden?

Antwort

2

Wenn Sie nur $().dialog() zu tun verwenden, wird eine Meldung angezeigt, die sagt "Laden" Ich würde empfehlen, einen anderen Ansatz zu verwenden, um diese Nachricht anzuzeigen.

Der jQueryUI dialog() Funktion ist ein bisschen übertrieben nur die Meldung "Loading" angezeigt wird, wenn Sie so etwas wie dies tun könnte:

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

Wenn jemand dies findet (wie ich) und wirklich wissen will, warum das nicht funktioniert, liegt es daran, dass das Dialogfeld den Fokus immer vom Textfeld entfernt, wenn Sie den Dialog ("Öffnen") verwenden.

+0

Danke für den Hinweis :) – rafuru

Verwandte Themen