Wie Sie programmgesteuert injizieren Suchanfragen in Select2 v4?
Hab ich baute eine web-app mit einem Select2-search-box, die Verbindung zu unserem backend via AJAX. Die Suche im Feld übergibt der Abfrage (z.B. "ÄPFEL") im backend, die dann aktualisiert die Seite. Wie kann ich programmgesteuert injizieren Suchanfragen in das Suchfeld ein? Ich übergeben zu müssen, in die "val", so dass select2 ruft die backend via AJAX und aktualisiert die Seite. Ich bin sicher, das ist offensichtlich, aber ich konnte ihn nicht finden in der Dokumentation.
Beispielsweise stattdessen zwingen Sie einen Benutzer, geben Sie "ÄPFEL" in das Suchfeld ein, ich möchte, dass der Benutzer auf eine Schaltfläche klickt und das Wort "ÄPFEL" automatisch in das Suchfeld ein, und haben dann die Seite aktualisieren.
Dank!
Folgenden Kevin ' s Kommentar, ich bin nicht in diesem Zustand, in dem der text eingebettet ist in die Suchbox und die Auswahl gepflückt hat, das richtige Element. Wie reiche ich (oder trigger) mit diesem Antrag, ich habe versucht, "keydown", "pressdown", "Absenden", "klicken" (das löscht die box), etc.
- Die bounty ist nicht möglich, durch die Art und Weise, weil es keine Möglichkeit gibt, zu erkennen, wenn der AJAX-request ausgelöst wird, wird fertig, ohne Einhängen in die Globale AJAX-handler.
- Nur um zu bestätigen, es gibt keine Möglichkeit, zu erzwingen, die click-through?
- Egal, ich bin dankbar für all Ihre Hilfe, und die bounty ist dein.
- Sie können erzwingen, dass das Ergebnis ausgewählt werden, um durch Simulation die
mouseup
Veranstaltung (oder einfach nur das Spritzen des<option>
wenn Sie die information), aber man kann nicht Vorhersagen, (genau), wenn die Ergebnis-Liste wird um das Ergebnis anzuzeigen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Select2 verwendet, um eine
select2('search', 'term')
Helfer-Methode, die würde assistiert haben, aber war es nicht über sich gebracht, zu Select2 4.0.0.Gibt es ein paar Möglichkeiten, wie dies getan werden könnte, aber im Allgemeinen Sie alle Folgen dem gleichen Muster der Schritte
input
)Also, gerade jetzt, in der Select2 4.0.0 der code dazu Aussehen würde
JS:
HTML:
Während dieses Beispiel nicht AJAX verwenden, es löst einen AJAX-request, wenn Select2 so konfiguriert ist, dass es.
mir auslösen 'keyup' funktionierte nur, wenn der Benutzer nicht wählen Sie jede option noch. Was funktioniert bei jedem auslösen 'input' statt. (nur getestet auf Chrome)
also basierend auf Kevin Brown ' s Antwort:
Können Sie festlegen
minimumInputLength
zu0
dann in derdata
Funktion können Sie überprüfenparams.term
length
und wenn es0
setzen Sie den filter-Wert auf den vordefinierten Wert haben.Es ist ziemlich albern, aber es funktioniert 😉
Als Ergänzung zu dieser Antwort, haben wir versucht, programmgesteuert fügen Sie einen neuen " tag " ein select2 konfiguriert für die Kennzeichnung. Statt der Auslösung eines keyup-Ereignis aus, auf das $Feld Suche, wir hatten das folgende zu tun.
Diesem ersten feuert ein Ereignis, das bewirkt, dass die 'Suche' Modul select2 zum hinzufügen einer 'markierten' Ergebnis, mit dem tag text ein, dann das zweite Ereignis verursacht select2 Feuer der 'select' - Ereignis intern, fügt ein neues tag zu den select2 Optionen und kann auch Auslöser andere Sachen, je nachdem, wie Sie es konfiguriert haben.
Den Antworten auf dieser Seite, hab mich fast da. Und weil andere scheinen die gleichen Probleme haben, bin ich teilen, wie ich es gelöst.
Einige der Kommentare auf Kevin Browns Antwort gefragt, wie simulieren Sie die EINGABETASTE, nachdem Sie den text eingegeben wurde und markiert ist.
Ist mir gelungen, nur mit einem timeout:
So, die volle Lösung wäre diese: