jQuery AutoComplete funktioniert nicht
Innerhalb einer jquery dialog, den ich möchte die jquery-autocomplete-Funktion von jqueryUI.
Habe ich dann bereit, eine Aktion in meinem Controller (die ich benutze ASP.NET MVC2) , wird wie folgt
public ActionResult GetForos(string startsWith, int pageSize)
{
//get records from underlying store
int totalCount = 0;
string whereClause = "Foro Like '" + startsWith + "%'";
List<Foro> allForos = _svc.GetPaged(whereClause, "Foro", 0, pageSize, out totalCount);
//transform records in form of Json data
List<ForoModelWS> foros = new List<ForoModelWS>();
foreach ( Foro f in allForos)
foros.Add( new ForoModelWS() { id= Convert.ToString(f.ForoId),
text= f.Foro + ", Sezione: " + f.Sezione + ", " + f.AuthorityIdSource.Name });
return Json(foros);
}
Klasse ForoModelWS ist eine einfache Klasse verwendet, nur zum halten der Daten, die übertragen werden sollen in json. Hier ist es
public class ForoModelWS
{
public string id;
public string text;
}
Auf der client-Seite habe ich folgenden jquery-code:
<input id="theForo" />
<script type="text/javascript">
$(document).ready(function() {
$("#theForo").autocomplete({
source: function(request, response) {
$.ajax({
type: "post",
url: "/Foro/GetForos",
dataType: "json",
data: {
startsWith: request.term,
pageSize: 15
},
success: function(data) {
response($.map(data, function(item) {
return {
label: item.text,
value: item.text
}
}))
}
})
},
minLength: 2,
select: function(event, ui) {
},
open: function() {
$(this).removeClass("ui-corner-all").addClass("ui-corner-top");
},
close: function() {
$(this).removeClass("ui-corner-top").addClass("ui-corner-all");
}
});
});
</script>
Aber das Schiebe-Fenster mit der suggeestions nicht angezeigt. Wenn ich einen Alarm innerhalb der Antwort-Funktion, die ich sehen kann, die korrekten Daten.
Vermisse ich etwas?
Danke für die Hilfe
1. BEARBEITEN:
Darüber, Wie man den code zu ändern, verwenden Sie die "id" - Eigenschaft für das ausgewählte element in der zurückgegebenen Liste?
2. BEARBEITEN:
Ich habe mehr mit den Chrome developer tool und ich habe gesehen, dass bei der autocomplete beginnt einige Fehler angezeigt. die folgenden:
Uncaught TypeError: Cannot call method 'zIndex' of undefined @ _assets/js/jquery-ui-1.8.4.custom.min.js:317
Uncaught TypeError: Cannot read property 'element' of undefined @ _assets/js/jquery-ui-1.8.4.custom.min.js:321
Uncaught TypeError: Cannot read property 'element' of undefined @ _assets/js/jquery-ui-1.8.4.custom.min.js:320
Scheint es, dass die autocomplete-plugin nicht finden, ein element, wenn es versucht, zum festlegen der z-Index des Schiebe-Vorschlag 1 level up seine container. Der erste Fehler wird angezeigt, wenn die jquery-UI-Dialog öffnet sich. Der Eingang für die Autovervollständigung ist im inneren ein jquery-tab, der in einem jquery Dialog
3. BEARBEITEN:
Ich füge den HTML-markup vollständig
<td width="40%">
<%= Html.LabelFor(model => model.ForoID)%>
<br />
<%= Html.HiddenFor(model => model.ForoID) %>
<input id="theForo" />
<%= Html.ValidationMessageFor(model => model.ForoID, "*")%>
</td>
Sieht ok für mich. Gibt es einen javascript-Fehler an? Ist es dein css ausblenden oder sowas?
und Charlino: Bitte haben Sie einen Blick auf die Frage Bearbeiten
InformationsquelleAutor Lorenzo | 2010-09-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hab das problem gefunden.
In meinem Fall war ich auch ein anderes plugin, diese eine.
Dass plugin war am Ende meiner Skripte und verursacht den beschriebenen Fehler in Frage. Ich habe entfernt das plugin und alles funktioniert sehr gut.
Bevor Sie es zu entfernen habe ich auch versucht, das problem zu isolieren, indem in eine statische html-beide Skripten. Ich habe erlebt, dass selbst die einfachste Verwendung der AutoVervollständigen-features, wie das
verursachen würde, die Fehler, die ich bekam.
Meine Wahl gewesen, entfernen Sie die Menü-plugin noch da, der code wird nicht mehr unterstützt.
Dank!
kannst du deinen code bitte? oder zumindest mehr Infos zu den änderungen zu tun... 🙂 vielen Dank!
Aber das Menü wird nicht lassen Sie mich anfügen jquery-Ereignisse zur Laufzeit der <a> - element (menuitem). wirklich nett, aber wirklich schlecht!
Es ist eine kurze änderung in der fg.menu.js. Ändern Sie die Zeile " $.fn.menu = function(options) { " zu " $.fn.fgmenu = function(options) { ". Und nutzen Sie dann die Menü-Aufruf $().fgmenu().
Hey @CoreyDownie Ihr Kommentar löste mein problem Heute. Ich goggled und lese dein Kommentar und das problem ist Weg. Danke. 🙂
InformationsquelleAutor Lorenzo
Diese Diskussion ist wirklich alt, aber indem es hier nur, falls es jemandem hilft...Wenn das AutoVervollständigen funktioniert nicht, wie in der drop-down nicht angezeigt, dann überprüfen Sie zuerst die einfachste form der es mit hart codierten Vorschläge wie unten.
Wenn das nicht funktioniert, dann IST es ein problem des jquery-Skripts verknüpft. In meinem Fall jquery.min.js war eine ältere version 1.7.1 in der Erwägung, dass alle anderen Scripte waren 1.8.18.
Ersetzt einfach die richtige version der script das problem gelöst.
Hoffe, dies hilft jemand stolpern mit dem grundlegenden problem, dass immer AutoVervollständigen arbeiten.
[ { label: "Choice1", value: "value1" }, ... ]
aber für einige Grund es nicht dieses, bis ich hinzugefügte Zitate rund um die label und Wert - Etiketten:[ { "label": "Choice1", "value": "value1" }, ... ]
Dann funktionierte es gut - hoffe, das hilft jemand anderen auch!InformationsquelleAutor Shashank
Genauso wie ich beantwortet hier, nehmen Sie eine Beute an meinem Beispiel jQuery UI - autocomplete. Achten Sie auf die
source
Teil. Hoffe es hilft:Wenn Sie nicht zu tun von jetzt an,Firebug. Es ist ein unschätzbares Werkzeug für web-Entwicklung. Sie können einen Haltepunkt auf diese JavaScript-und sehen, was passiert.
Ich hatte einen tiefen Blick auf Ihre Probe, und es scheint mir fast identisch. Ich dont-pass-Daten".d", um die map-Funktion. Jedenfalls, wie ich schrieb auf meine Frage, ob ich Schreibe "alert(Element.text)" als erste istruction innerhalb der map-Funktion, die ich sehen kann, werden die richtigen Daten angezeigt.
versuchen Sie analysieren die "Quelle" in meinem Beispiel. Die Vorherige person, der ich geholfen (und mich) hatte Probleme, es sei denn, wir analysierten es mit $.Karte.
Was meinst du mit Parsen mit Karte? Für mich scheint es, dass ich die map-Funktion genau wie Ihre Probe. Könnten Sie bitte genauer erklären? danke
du hast Recht, dir ist ziemlich identisch zu meinen. Könnten Sie bitte versuchen, zwei Dinge: hinzufügen der dataFilter und contentType Eigenschaften, um Ihre $.ajax von meinem code. Es ist der einzige Unterschiede, die ich erkennen kann (abgesehen von den Daten: {} nicht gesendet json analysiert, wie " {"term": '" + request.Begriff + "' }").
InformationsquelleAutor rebelliard
fgmenu Mit der Funktion menu() UND AutoVervollständigen Mit der Funktion
Den Namen der Funktion ist die gleichen Probleme auftreten,
Ändern Sie können den Namen der Funktion in der fgmenu.js
InformationsquelleAutor sadeg hadi
basierend auf Lorenzo Antwort, die ich geändert
zu
aus dieser plugins Menü und es geklappt hat (beide AutoVervollständigen und Menü-plugin)
InformationsquelleAutor user854364
Sie brauchen, um zu laden
jQuery
zuerst, dannjQuery UI
dannBootstrap JS
die richtige Reihenfolge sollte sein:statt:
Edit:
Für zukünftige Besucher, der Grund ist eigentlich, weil der Konflikt zwischen
jquery-ui.js
undjquery.autocomplete.js
seitjquery-ui.js
ist bereits über die AutoVervollständigen-Funktion.So brauchen Sie nur entfernen
jquery.autocomplete.js
zu machen, es funktioniert.