erste Frage (und hoffentlich, aber zweifelhaft meine einzige)
Ich verwende die automatische Vervollständigung der jQuery-Benutzeroberfläche. Hier ist Beispielcode, um mein Problem zu replizieren.
%Vor%Wenn ein Benutzer "J" eingibt, werden ihm "Clojure" und "JavaScript" als Vorschläge angezeigt.
Ich habe Java aus dieser Liste weggelassen. Wenn der Benutzer nach Java suchen möchte, gibt er 'Java' ein, drückt die Eingabetaste, aber das Formular wird nicht gesendet. Wenn Sie ein Leerzeichen hinzufügen, verschwindet der 'JavaScript'-Vorschlag und das Formular kann durch Drücken der Eingabetaste gesendet werden.
Ich erstelle eine freie Suche, ich möchte, dass Benutzer in der Lage sind, durch Drücken der Eingabetaste zu suchen, auch wenn es Vorschläge gibt.
%Vor%Ich versuchte das oben genannte Denken, ich könnte manuell einen Submit-Tastendruck erkennen und das Formular absenden, aber der Alarm zeigt, dass alle Schlüssel erkannt wurden, außer "submit", was durch die automatische Vervollständigung unterdrückt wird.
Jede Hilfe wird sehr geschätzt! Danke.
AKTUALISIEREN
Ich musste ein paar Änderungen vornehmen, aber dieser Code funktioniert gut auf meiner Seite, nachdem ich das getan habe. Zuerst sollte e.keycode e.keyCode sein. Ich dachte nicht, dass der Fall eine Rolle spielt, aber das tut es. Stellen Sie außerdem sicher, dass Sie die 13 nicht angeben, wenn Sie nach dem keyCode suchen, um die Eingabetaste zu sein. Es wird nicht korrekt funktionieren, wenn Sie dies tun. Hier ist der neue Code:
%Vor%Die Tastendruck-Funktion sollte wie folgt aussehen. Außerdem können Sie die Autocomplete- und die Tastendruck-Funktionen verketten, um es Ihnen leichter zu machen. Der folgende Code sollte funktionieren.
%Vor%Ich hatte ein ähnliches Problem, das jquery-ui Autocomplete-Widget löst das select-Ereignis aus, wenn der Benutzer einen Vorschlag aus der Liste auswählt, ob der ausgewählte Vorschlag angeklickt wurde oder die Eingabetaste gedrückt wurde. Es hat jedoch nichts getan, wenn der Benutzer Text eingegeben und die Eingabetaste gedrückt hat, ohne ein Element aus der Liste auszuwählen. Wenn das passiert, muss ich eine Suche machen.
Es war einfach, einen keypress
-Ereignishandler hinzuzufügen, aber er hat ausgelöst, ob eine Auswahl getroffen wurde oder nicht. Also habe ich eine Variable, didSelect
, hinzugefügt, um den Auswahlstatus beizubehalten.
Hier ist die komplette Lösung:
%Vor%});
Verwenden der UI Autocomplete-Plugin-Version 1.8.5:
Suchen Sie nach diesem Codebeispiel
"case d.ENTER: case d.NUMPAD_ENTER: a.menu.element.is (": visible ") & amp; & amp; c.preventDefault ();"
und entfernen oder kommentieren Sie es aus.
Im Wesentlichen was oben gesagt wurde, aber von der aktuellen Version des Plugins.
Prost
Pete
Autocomplete unterdrückt, aber dies funktionierte als Workaround für mich:
%Vor%Ich hatte das gleiche Problem und dachte darüber nach, die Validierung zu verwenden, aber am Ende sieht meine Lösung viel einfacher aus als andere Lösungen auf dieser Seite:
Erstellen Sie ein Eingabefeld zum Eingeben des Textes mit dem Namen #input
und einer versteckten Eingabe mit dem Namen #hiddeninput
. Ihr Such-Backend muss den Wert für #hiddeninput
verwenden.
Setzen Sie in Ihrer Autocomplete den Wert von #hiddeninput auf request.term: (Ich setze dies in $.ajax({ success: })
)
$ ("input # hiddeninput"). val (request.term);
%Vor%
Nun wird Ihre Suche nach den Eingaben des Benutzers durchgeführt, bis er etwas aus der Vorschlagsliste auswählt.
Hier habe ich Autocomplete verwendet, um nach einem Studenten zu suchen. Wenn der Benutzer die EINGABETASTE drückt, würde das Formular senden, selbst wenn nichts aus der Liste ausgewählt wurde. Das Ereignis 'Antwort' würde den Wert eines verborgenen Eingabefeldes mit dem ersten Eintrag in der Liste aktualisieren. Sie können auch klicken oder aus der Liste auswählen.
Tags und Links javascript jquery jquery-ui autocomplete