jQuery Autocomplete nicht Element auswählen

8

In der Option "Quelle" erhalte ich mit ajax die Ergebnisse + 1 benutzerdefinierten Notiztext mit Informationen über mögliche Ergebnisse. Wie: "Zeige 2 von 3456 Ergebnissen". Es ist nur eine Information für den Benutzer.

Für den letzten Eintrag in der -l-Liste hätte ich die folgenden Ereignisse nicht verarbeitet: keyup, keydown, pageup und pagedown.

Dafür habe ich in der Option "open" folgendes gesetzt:

%Vor%

HTML sieht jetzt so aus:

%Vor%

Dies funktioniert, wenn es mindestens ein reales Ergebnis liefert, nicht nur den letzten Notiztext.

Aber was, wenn kein Ergebnis verfügbar ist und nur der Notizentext (letzter Punkt) "No Results", dann bekomme ich eine Fehlermeldung in den Ereignissen: keyup, keydown, pageup und pagedown.

Fehler in Firebug: item.offset () ist null

%Vor%

Was kann ich tun, um ein benutzerdefiniertes -li- Ende der Liste hinzuzufügen, das nicht auswählbar ist?

jQuery-UI 1.8.13

    
user706420 31.05.2011, 11:02
quelle

2 Antworten

2

Ich habe festgestellt, dass sich dieses Widget beschweren wird, wenn Ihre li -Elemente kein a -Tag enthalten. Ich weiß, das macht es wählbar, also musst du entweder die Klasse ein wenig für deinen Fall erweitern oder eine CSS-Regel erstellen, die sicherstellt, dass li keinen ausgewählten Status erhält (was ein bisschen wie ein Hack ist, ich gib zu)

    
restlessdesign 28.07.2011 14:14
quelle
1

Warum sollten Sie nicht mit den CSS-Selektoren herumhantieren, sondern an die Ereignisse select und change binden, um die benutzerdefinierten Daten zu untersuchen, die Sie dem Objekt hinzufügen (verfügbar über das Argument ui.item für diese Ereignisse)? Sie würden am Ende mit so etwas enden:

%Vor%

Beachten Sie, dass preventDefault() nur dieses Ereignis stoppt. In bestimmten Fällen (wenn die Tastatur zum Navigieren in der Liste verwendet wird) wird die Eingabe mit dem Wert des Elements gefüllt. Sie möchten, dass Ihr Test den Wert des Textfelds zurücksetzt, wenn Sie festgestellt haben, dass das ausgewählte Element oder der Wert, zu dem geändert werden soll, tatsächlich Ihr Datenelement ist.

    
Josh Anderson 03.08.2011 14:29
quelle