jqueryui autocomplete-filter-Ergebnisse (von remote-Datenquelle ) , "beginnen mit" input
Ich bin mit jquery autocomplete mit mehreren Ergebnissen und einer remote-Datenquelle. Ich bin in der Lage, ziehen Sie die Daten aus der Ferne, und wählen Sie mehrere Ergebnisse. Aber die Ergebnisse, die Liste wird nicht aktualisiert, basierend auf den ersten 2 Zeichen, Eingabe, und die jQueryUI-Dokumentation ist Dünn zu diesem Thema.
Habe ich recherchiert um und fand diese Antwort hier auf SO und wollen zu integrieren, es mit dem rest meiner Funktion, aber es funktioniert nicht-update der Liste der Suchergebnisse. Unabhängig, ist die Antwort SO gut funktioniert, aber nicht bei der Integration mit mehreren Ergebnissen und einer remote-Datenquelle.
Aus der AutoVervollständigen - /remote-Quelle/mehrere Funktion (gekürzt). Dieser Teil gut funktioniert:
.autocomplete({
source: function( request, response ) {
$.ajax({
url: "/controller/myfunction",
dataType: "json",
data: request,
success: function(data){
if(data.response == 'true') {
response(data.message);
}
}
});
},
Mögliche Lösung SO: (funktioniert unabhängig, aber nicht mit dem jquery/remote/mehrere code):
var wordlist= [ "about", "above", "within", "without"];
$("#input1").autocomplete({
source: function(req, responseFn) {
var re = $.ui.autocomplete.escapeRegex(req.term);
var matcher = new RegExp( "^" + re, "i" );
var a = $.grep( wordlist, function(item,index){
return matcher.test(item);
});
responseFn( a );
}
});
Ich brauche, um die Integration dieser Lösung mit meinem code.
Das wäre ideal; ich arbeite auf beide Optionen und versuchen zu sehen, welche Erträge Obst ersten.
InformationsquelleAutor chowwy | 2012-10-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vom jQuery UI Autocomplete: Suche vom Anfang des String die Sie ausprobieren können:
Können Sie zeigen Sie Ihre vollständigen code? Auch, Sie können die db-Abfrage wie andere erwähnt haben, um die Suche ab dem Anfang der Zeichenkette.
Mein code ist der remote-Datenquelle-code aus der jQuery-Autocomplete-Website (jqueryui.com/autocomplete/#remote), mit der Anpassungen gemäß meiner Frage zu den source-Teil der Funktion.
Dann es klingt wie Sie anpassen müssen, um die db-Abfrage zu starten, seine matching auf den Anfang der Zeichenkette.
Sie sollten nicht beides tun. Der eine oder andere sollte für Sie arbeiten.
InformationsquelleAutor jk.
jQuery autcomplete sendet, was der Benutzer eingegeben hat als ein HTTP-parameter, so können Sie es verwenden, zu ändern, die Ergebnisse, die Sie Holen aus der DB.
Hier ist ein Beispiel (CakePHP). Es wird der "Begriff" - parameter enthält, was der Benutzer eingegeben in, und nutzt es diese zum generieren der DB-Abfrage.
Wenn alle Ergebnisse zeigen, vielleicht machen die Abfrage weniger Ergebnisse.
InformationsquelleAutor Tom Dalling
Optimal, es sollte der controller liefert, dass die gefilterten Daten in JSON. Ich schlage vor, Sie besser versuchen, filtern der Daten in den controller statt in den Blick. Wenn Ihre Anwendung MVC-orientiert, sollten Sie halten alle Abfragen und filtern innerhalb des Modells verwendet, die innerhalb der controller-Aktion, die Sie angeben. Ich glaube, dass die Verwendung von AJAX (Asynchronous Javascript and XML) verwendet werden soll, pass auf, wie viel Last auf dem server wie möglich. so, dein code anzeigen wäre eher einfache
var wordlist= [ "über", "oberhalb", "innerhalb", "ohne"];
Autocomplete|jQuery-Ui - Quelle besagt, dass:
Basierend auf den oben genannten, könnten Sie ändern Ihre controller-Aktion, so verwendet er das
term
GET-Anforderung, so ist es verwendet, um zu filtern die Daten in der Abfrage.. achten Sie darauf, lassen mich wissen, wie es geht.InformationsquelleAutor Snivs
Als Sie mit $.ajax mit json-Datentyp dann Ihre Daten ein.message ist ein Array, das können Sie filtern, indem unnötige Elemente.
vorausgesetzt, die ajax-msg-Array gebaut worden ist, von unten Beispiel json,
also, was wir wollen, ist zu prüfen, 'Wert' s, wenn jeder beginnt mit dem eingegebenen Begriff.
Sie können ersetzen Sie einfach Ihre AutoVervollständigen-code mit diesem:
InformationsquelleAutor Mahyar
Hier ist meine Funktion. Ich benutze es und funktioniert Prima.
InformationsquelleAutor Amit Garg