MyBB.de Forum
jQuery UI Autocomplete - Druckversion

+- MyBB.de Forum (https://www.mybb.de/forum)
+-- Forum: Sonstiges (https://www.mybb.de/forum/forum-1.html)
+--- Forum: Programmierung (https://www.mybb.de/forum/forum-32.html)
+--- Thema: jQuery UI Autocomplete (/thread-24951.html)



jQuery UI Autocomplete - Falkenauge Mihawk - 12.02.2012

Salü MyBB-Gemeinde

Ich habe ein Problem mit der Autocomplete-Funktion von jQuery UI. Das Problem sieht so aus: Wenn ich einen unvollständigen Benutzername eingebe, sollte eine Liste kommen (remote Source), die jedoch nicht erscheint. Zuerst habe ich gedacht, die Source wird garnicht abgerufen. Dann habe ich im entsprechenden Script eine Art Debugging-Funktion hinzugefügt (Ich schreibe in eine Datei, was wann rein kommt und was raus geht).
Resultat: Source wird abgerufen.

Dann habe ich gedacht, im JS-Code ist ein Fehler und habe die Errorconsole von Firefox gestartet. Keine Errors.

Mit den Ergebnissen der letzten Erkenntnisse habe ich dann den HTML-Code untersucht.
Ergebnis: Im Input-Feld ist autocomplete off. Wenn ich jetzt aber autocomplete auf on setze, passiert dennoch nichts sichtbares.

Darausfolgend überreiche ich euch folgende Codes:

Autocomplete JS-Datei:
Code:
$(function() {
    function split(val) {
        return val.split(/,\s*/);
    }
    
    function extractLast(term) {
        return split(term).pop();
    }
    
    $(".autocomplete")
        // don't navigate away from the field on tab when selecting an item
        .bind("keydown", function(event) {
            if(event.keyCode === $.ui.keyCode.TAB && $( this ).data("autocomplete").menu.active) {
                event.preventDefault();
            }
        })
        .autocomplete({
            source: function(request, response) {
                $.getJSON("member.php?act=return&was=autocomplete", {
                    term: extractLast(request.term)
                }, response);
            },
            search: function() {
                // custom minLength
                var term = extractLast(this.value);
                if(term.length < 2) {
                    return false;
                }
            },
            focus: function() {
                // prevent value inserted on focus
                return false;
            },
            select: function(event, ui) {
                var terms = split(this.value);
                // remove the current input
                terms.pop();
                // add the selected item
                terms.push(ui.item.value);
                // add placeholder to get the comma-and-space at the end
                terms.push("");
                this.value = terms.join(", ");
                return false;
            }
        });
});

Das Feld mit dem Autocomplete:
Input:
Code:
<input type="text" name="uids" class="autocomplete"  id="text_input" value="" />

Output:
Code:
<input id="text_input" class="autocomplete ui-autocomplete-input" type="text" value="" name="uids" autocomplete="off" role="textbox" aria-autocomplete="list" aria-haspopup="true">

PHP-Resultate:
Code:
12.02.2012 15:18:55 - Input: Fa | Database: FalkenaugeMihawk | Output: ["FalkenaugeMihawk"]

Vielen Dank für eure wegweisenden Hilfestellungen im Voraus! Smile


RE: jQuery UI Autocomplete - Falkenauge Mihawk - 12.02.2012

Problem gelöst: Liste hat sich um 1000px nach rechts verzogen, so dass ich das nicht gesehen habe - Lösung war CSS-Code hinzufügen.