jQuery-UI-Autocomplete-Verhalten. Wie bei der Suche nach freien text eingeben?
erste Frage (und hoffentlich, aber zweifelnd meine einzige)
Bin ich mit dem jQuery UI Autocomplete. Hier ist Beispielcode zu replizieren mein Problem.
var suggestions = ["C", "Clojure", "JavaScript", "Perl", "PHP"];
$("#autocomplete").autocomplete({
source: suggestions
});
Wenn ein Benutzer 'J' Sie werden präsentiert mit "Clojure' und 'JavaScript' als Anregungen.
Habe ich weggelassen Java aus dieser Liste, wenn der Nutzer will, um die Suche für Java geben Sie "Java", drücken Sie die enter-Taste, aber das Formular nicht Absenden. Wenn Sie ein Leerzeichen hinzufügen der 'JavaScript' Vorschlag verschwindet und das Formular abgeschickt werden kann durch drücken der enter-Taste.
Ich bin die Schaffung einer freien Suche, ich möchten, dass Benutzer in der Lage sein, die Suche durch drücken der EINGABETASTE, auch wenn es Anregungen zur Verfügung.
$("#autocomplete").keypress(function(event) {
alert(event.keyCode);
if (event.keyCode=='13') $this.closest('form').submit();
});
Ich versucht, die oben ich dachte, ich könnte manuell erkennen Einreichen Tastendruck und senden Sie das Formular, aber der Alarm zeigt alle Tasten erkannt werden, AUßER vorlegen, das scheint zu sein, unterdrückt von der autocomplete.
Jede Hilfe wird sehr geschätzt! Danke.
Du musst angemeldet sein, um einen Kommentar abzugeben.
UPDATE
Musste ich ein paar änderungen, aber dieser code funktioniert auf meiner Seite nach, das zu tun. Erste, e.keycode sollte e.keyCode. Ich glaube nicht, dass der Fall wichtig, aber es funktioniert. Auch, stellen Sie sicher, dass Sie nicht das zitieren 13 wenn Sie überprüfen Sie den keyCode der enter-Taste. Wird es nicht ordnungsgemäß, wenn Sie so tun. Hier der neue code:
Keypress-Funktion sollte wie folgt Aussehen, und Sie können auch Kette die autocomplete-und keypress-Funktionen machen es einfacher für Sie. Unten der code sollte funktionieren.
Ich hatte ein ähnliches problem, die jquery-ui-autocomplete-widget feuert das select-Ereignis, wenn der Benutzer wählt einen Vorschlag aus der Liste, ob der ausgewählte Vorschlag wurde angeklickt, oder die enter-Taste gedrückt wurde. Aber es Tat nichts, wenn der Benutzer text eingegeben und die EINGABETASTE gedrückt ohne die Auswahl einer Option aus der Liste. Wenn das passiert, muss ich eine Suche.
Es wurde einfach eine neue
keypress
event-handler, aber es befeuert, ob eine Auswahl gemacht wurde oder nicht. Also ich habe eine variable,didSelect
zu gewährleisten, um den Auswahlzustand.Hier die komplette Lösung:
});
Verwenden der UI-Autocomplete-plugin der version 1.8.5:
Look für dieses bisschen code
"Fall d....GEBEN Sie ein:Fall d....NUMPAD_ENTER:ein.Menü.element.is(":visible")&&c.preventDefault();"
und entfernen oder kommentieren Sie es aus.
Im wesentlichen dem, was oben gesagt wurde, aber von der aktuellen version des plugins.
cheers
Pete
Dies ist, was ich getan habe
AutoVervollständigen supresses Einreichen, aber das war als workaround für mich:
Ich hatte das gleiche problem, und dachte sich mit der Validierung, um dies zu erreichen, aber am Ende meine Lösung sieht viel leichter als andere Lösungen auf diese Seite:
Machen ein Eingabefeld geben Sie den text ein, benannt
#input
und ein hidden input namens#hiddeninput
. Ihre Suche-backend haben, um den Wert für#hiddeninput
.Innerhalb Ihrer autocomplete, setzen Sie den Wert von #hiddeninput zu verlangen.Begriff: (ich habe diese im inneren
$.ajax({ success: })
)Nun wird die Suche durchgeführt werden, was der Anwender eingegeben hat, bis er wählt etwas aus der Vorschläge-Liste.
Hier habe ich autocomplete Suche für einen Schüler. Wenn der Benutzer die EINGABETASTE gedrückt, wird die form vorlegen würden, auch wenn nichts ausgewählt wurde, aus der Liste. Das 'response' - Ereignis aktualisiert werden würde, den Wert eines hidden input-Feld mit dem ersten Eintrag in der Liste. Sie können auch auf oder wählen Sie aus der Liste.