Dez 16

Bei einem Autocomplete Input-Feld mit JQuery (Autocomplete-Plugin von pengoworks.com), bei dem viele Elemente zurückgeliefert wurden, entstand eine Scrollbar in dem Resultate-Div. Das Problem: Ein Klick auf die Scrollbar im IE oder Opera klappte die gesamte Resultate-Liste zu, anscheinend auf Grund eines Javascript-Events blur() auf dem Input-Feld. Durch dieses Event wurde die Resultate-Liste geschlossen.

Mein Fix in jquery.autocomplete.js:


/* Variable um zu speichern, dass der Mouseclick auf dem Resultate-Div geschah */
var mouseDownOnSelect = false;
$jresults.mousedown(function() {
        mouseDownOnSelect = true;
});
/* mouseup funktionierte leider nicht */
$jresults.mouseout(function(){
        mouseDownOnSelect = false;
});
/* Bei einem Klick, prüfe ob der Klick außerhalb der Resultate-Liste geschah, */
/* wenn ja, schließe Fenster */
$j(document).click(function(){
        if(!mouseDownOnSelect){
            hideResultsNow();
        }
});

/* Zusätzlich im blur()-Event des input-Feldes die If-Abfrage eingefügt */
$jinput.blur(function(event) {
            if (!mouseDownOnSelect) { /* <--- */
                hasFocus = false;
                hideResults();
           }                                         /* <--- */
});

Einen Kommentar schreiben