jQuery UI Autocomplete-Verhalten. Wie man freien Text bei der Eingabe sucht?

8

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.

    
John 24.09.2010, 10:02
quelle

7 Antworten

7

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%     
ryanulit 24.09.2010 13:22
quelle
2

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%

});

    
richardsun 21.11.2011 22:31
quelle
1

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

    
Peter Tizzard 06.12.2010 11:00
quelle
1

Das habe ich gemacht

%Vor%     
gman 01.03.2011 18:56
quelle
1

Autocomplete unterdrückt, aber dies funktionierte als Workaround für mich:

%Vor%     
Eyjólfur Gislason 25.11.2010 14:03
quelle
0

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:

  1. 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.

  2. Setzen Sie in Ihrer Autocomplete den Wert von #hiddeninput auf request.term: (Ich setze dies in $.ajax({ success: }) )

  

$ ("input # hiddeninput"). val (request.term);

  1. Legen Sie die automatische Vervollständigung mit der Methode select: fest, um die ausgeblendete Eingabe mit dem ausgewählten Vorschlag zu füllen:
%Vor%

Nun wird Ihre Suche nach den Eingaben des Benutzers durchgeführt, bis er etwas aus der Vorschlagsliste auswählt.

    
zenlord 25.07.2011 16:39
quelle
0
%Vor%

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.

    
brainzone 06.01.2013 02:04
quelle