jQuery Autocomplete Benutzerdefinierte Daten-und display-abgesehen vom label-Wert
Ich versuche mich zu ziehen, einige Daten aus einer json und anzeigen mit jquery autocomplete.
Json-array enthält ID, Titel, Datum. Auf das display möchte ich zeigen den Titel und das Datum und klicken Sie auf ich möchte, um eine Analyse der spezifischen ID für diesen Titel.
Also derzeit habe ich:
$("input").autocomplete({
source: function (d, e) {
$.ajax({
type: 'GET',
url: url + mode + encodeURIComponent(d.term) + key,
dataType: "jsonp",
success: function (b) {
var c = [];
$.each(b.results, function (i, a, k) {
c.push(a.title + " " + a.date) //Displays Title and Date
});
e(c)
}
})
},
select: function (a, b) {
console.log(b);
//Appends an array with 2 keys: Value and Label.
//Both display the title and date as shown above.
}
}).data( "autocomplete" )._renderItem = function( ul, item ) {
return $( "<li></li>" )
.data( "item.autocomplete", item )
.append( "<a>"+ item.label + "</a>" )
//Here I want to append a.id as class of this
//but the only values are value and label.
.appendTo( ul );
};
Also, wie kann ich anfügen <li class="' + a.id + '">" + a.title + " " + a.date + "</li>"
Für benutzerdefinierte format des Etiketts, statt umschreiben der ganzen Anfrage konnte formatieren Sie es nach der AutoVervollständigen-original-Anfrage. Mehr über it hier.
InformationsquelleAutor ClydeM | 2013-02-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sind Sie Strippen aus der zusätzlichen Eigenschaften mit Ihren
$.each
Schleife innerhalb der AJAX-success-Funktion (nebenbei, ich bin mir ziemlich sicher, dass$.each
's callback-nicht nehmen, einen Dritten parameter). Fügen Sie einfach einlabel
Eigenschaft jedes Ergebnis-Element und es sollte funktionieren:Wird das widget funktionieren mit extra Eigenschaften, die Sie gerade muss haben mindestens eine
label
odervalue
Eigenschaft.Nun in Ihrem
_renderItem
Funktion können Sie den Zugriff auf dietitle
unddate
- Eigenschaft jedes Elements:InformationsquelleAutor Andrew Whitaker
Versuchen. Legen Sie die ID in den Wert Ihrer ajax-call.
InformationsquelleAutor emmy
Auf dem $.ajax-Erfolg, den Sie übergeben sollte ein Objekt mit label und Werte und nicht nur der label-string, dann können Sie zuweisen ein.id des Elements.Wert. Wie diese:
Man kann auch das original-Objekt als label (
c.push({'value':a.id, 'label':a})
), und lassen Sie die Formatierung für die_renderItem
(woitem.label
wäre das gleiche wiea
)InformationsquelleAutor Capilé