Mit select2 jquery plugin mit Tags: true, wie können Sie verhindern, dass Auswahlmöglichkeiten im Dropdown-Menü angezeigt werden, die bereits ausgewählt sind?

9

Ich migriere zu select2, um es als Tagging-Plugin von einem anderen Plugin zu verwenden, aber es gibt eine Lücke, die ich bin versuchen herauszufinden, ob select2 unterstützen kann.

Schauen wir uns ein Beispiel an. Sagen wir, meine Auswahlliste (Server-Seite von Ajax-Anfrage zurückkommen) ist

%Vor%

Im alten Plugin benutze ich, nachdem ich eine der Optionen gewählt habe (sagen wir "Cat") und es erscheint im Textfeld, das nächste Mal suche ich nach der gleichen Teilzeichenfolge (sagen wir "Ca") , es hat DO N "T haben" Cat "in der Auswahlliste (da es weiß, dass Sie es bereits gewählt haben)

Es scheint, als ob select2 das Element immer noch im Dropdown-Menü anzeigt, wenn Sie es suchen, unabhängig davon, ob Sie es bereits ausgewählt haben. Select2 verhindert die Eingabe, wenn Sie Enter drücken, aber das scheint etwas unintuitiv zu sein, also versuche ich herauszufinden, ob select2 dasselbe Verhalten von dem anderen Plugin replizieren kann (wo die Auswahl nicht einmal auftaucht) / p>

Als ein weiteres Beispiel dafür, dass das funktioniert, macht der stackoverflow-Tag-Abschnitt einer Frage auch das Richtige. Wenn ich "jquery" zu meiner Liste von Tags für diese Frage hinzufüge und dann erneut nach "jquery" suche, zeigt es DOESN "T das in der Liste an (wie es bereits gewählt wurde). Das ist das Verhalten, nach dem ich suche.

Hier ist mein aktueller select2-Code:

HTML :

%Vor%

JavaScript :

%Vor%

Ich würde denken, dass es irgendwie in der Funktion templateResult eine Möglichkeit gibt, false oder etwas zurückzugeben, um dieses Element nicht anzuzeigen, wenn es bereits ausgewählt ist. Ist so etwas möglich (kann online oder in der Dokumentation nichts finden)

    
leora 26.09.2015, 13:22
quelle

3 Antworten

5

Es klingt, als ob Sie nach einem benutzerdefinierten Matcher suchen. Wenn Sie einen verwenden, können Sie die Dropdown-Elemente filtern, bevor Sie sie dem Benutzer anzeigen.

%Vor% %Vor% %Vor%
    
Nit 03.10.2015, 15:31
quelle
0

Sie sollten die templateResult Funktion ändern ...

  

Die Funktion templateResult sollte eine Zeichenfolge zurückgeben, die den anzuzeigenden Text oder ein Objekt (z. B. ein jQuery-Objekt) enthält, das die Daten enthält, die angezeigt werden sollen. Es kann auch null zurückgeben, wodurch verhindert wird, dass die Option in der Ergebnisliste angezeigt wird.

Ссылка

    
JamesHalsall 26.09.2015 13:30
quelle
-1

Sie können dies einfach wie folgt erreichen,

Sie müssen die ausgewählten Optionen mit CSS

ausblenden

%Vor% %Vor% %Vor%
    
jlocker 03.10.2015 14:56
quelle