Vor jQuery UI 1.8.4 konnte ich HTML in dem JSON-Array verwenden, das ich für die Arbeit mit einer automatischen Vervollständigung erstellt habe.
Ich konnte so etwas tun wie:
$row_array['label'] = '<span style="color: red; font-family: courier;">User, Name</span>';
Das würde als roter Text in der Dropdown-Liste angezeigt.
Ab 1.8.4 funktioniert das nicht. Ich habe http://dev.jqueryui.com/ticket/5275 gefunden, das mir sagt, dass ich hier das benutzerdefinierte HTML-Beispiel verwenden soll, mit dem ich kein Glück hatte.
Wie kann ich dafür sorgen, dass HTML im Vorschlag angezeigt wird?
Meine jQuery ist:
<script type="text/javascript">
$(function() {
$("#findUserIdDisplay").autocomplete({
source: "ui_autocomplete_users_withuname.php",
minLength: 2,
select: function(event, ui) {
$('#findUserId').val(ui.item.id);
}
});
});
</script>
Mein JSON-Array enthält HTML wie folgt:
[{"label":"<span style="color: red";>User, Name</span>","value":"User, Name","id":"10"}]
Antworten:
Fügen Sie dies Ihrem Code hinzu:
So wird Ihr Code:
Hinweis: Verwenden Sie in alten Versionen von jQueryUI
.data("autocomplete")"
anstelle von.data("ui-autocomplete")
quelle
<a>
, können Sie das Element nicht anklicken / scrollen.Dies ist auch in der Dokumentation zur automatischen Vervollständigung von jquery-ui unter folgender Adresse dokumentiert: http://api.jqueryui.com/autocomplete/#option-source
Der Trick ist:
autocomplete({ html:true});
<div>sample</div>
im Feld "label" der JSON-Ausgabe für die automatische Vervollständigung übergeben.Wenn Sie nicht wissen, wie Sie das Plugin zur JQuery-Benutzeroberfläche hinzufügen können, gehen Sie wie folgt vor:
quelle
Diese Lösung wird nicht empfohlen, aber Sie können einfach die Quelldatei jquery.ui.autocomplete.js (v1.10.4) bearbeiten.
Original:
Fest:
quelle
Ich hatte das gleiche Problem, aber ich bevorzuge es, ein statisches Array von Optionen für meine Option ('Quelle') für die Leistung zu verwenden. Wenn Sie dies mit dieser Lösung versucht haben, werden Sie feststellen, dass jQuery auch auf dem gesamten Etikett sucht.
EG wenn Sie geliefert haben:
Wenn Sie dann "span" eingeben, stimmen beide Ergebnisse überein, damit die Suche nach dem Wert nur die
$.ui.autocomplete.filter
Funktion überschreibt :Sie können den letzten Parameter
c.value
nach Belieben bearbeiten , z. B.c.id || c.label || c.value
um nach Beschriftung, Wert oder ID zu suchen.Sie können so viele Schlüssel / Werte für den Quellparameter der automatischen Vervollständigung angeben, wie Sie möchten.
PS: Der ursprüngliche Parameter ist
c.label||c.value||c
.quelle
Ich hatte das von Clarence erwähnte Problem. Ich musste HTML bereitstellen , um ein schönes Erscheinungsbild mit Stilen und Bildern zu erzielen. Dies führte dazu, dass "div" eingegeben wurde, das allen Elementen entspricht.
Mein Wert war jedoch nur eine ID-Nummer, sodass ich nicht zulassen konnte, dass die Suche genau danach abläuft. Ich brauchte die Suche, um nach mehreren Werten zu suchen, nicht nur nach der ID-Nummer.
Meine Lösung bestand darin, ein neues Feld hinzuzufügen, das nur die Suchwerte enthielt, und dies in der jQuery-UI-Datei zu überprüfen. Das habe ich getan:
(Dies ist auf jQuery UI 1.9.2 der Fall; auf anderen kann dies auch der Fall sein.)
Filterfunktion in Zeile 6008 bearbeiten:
Ich habe die Prüfung für das Feld "value.searchonly" hinzugefügt. Wenn es dort ist, wird nur dieses Feld verwendet. Wenn es nicht da ist, funktioniert es wie gewohnt.
Dann verwenden Sie die automatische Vervollständigung genau wie zuvor, außer dass Sie Ihrem JSON-Objekt den Schlüssel "Nur Suchen" hinzufügen können.
Ich hoffe das hilft jemandem!
quelle