2015-05-27 1 views
21

Ich habe die neue Select2 v4.0 ausprobiert, die viele Verbesserungen hat. Ich bin hauptsächlich an der Funktion tags interessiert. Ich möchte nach Tags über Ajax suchen und nur in der Lage sein, ein Tag aus den angezeigten Ergebnissen auszuwählen und nicht in der Lage sein, neue Tags zu erstellen. Die Funktionalität ähnelt StackOverflow. Wenn Sie nicht über die erforderliche Reputation verfügen, können Sie keine neuen Tags erstellen, Sie können jedoch eine Frage mit vorhandenen Tags versehen.Wie deaktiviere ich die Erstellung neuer Tags mit select2 v4.0?

Hier ist ein jsfiddle mit meinem Code, der den Beispielen entnommen ist. Im Beispiel können Sie neue Tags erstellen, die ich einschränken möchte. Der Benutzer sollte Tags nur aus der Liste auswählen können, die von GitHub über Ajax abgerufen wurde.

Kann jemand diese Funktionalität deaktivieren?

Antwort

35

Dies sollte funktionieren - in der Initialisierung von select2, versuchen Zurückgeben wie so von der createTag Funktion undefined:

createTag: function(params) { 
       return undefined; 
      } 
+1

Entschuldigung für die verspätete Antwort. Das scheint für mich gut zu funktionieren. Ich danke Ihnen für das Teilen! :) – tftd

+0

@tftd kannst du die Geige mit dieser Lösung aktualisieren, da ich versucht habe, die Geige zu aktualisieren, die du gesendet hast, aber es funktioniert nicht darin. –

+6

Anscheinend wurde dies in pre-4.0 (3.5.3) Select2 'createSearchChoice()' genannt. Sie änderten viele Funktionsnamen, als sie zu 4.0 wechselten. –

2

Sie können Tags deaktivieren, indem Sie beim Initialisieren von Select2 tags: true entfernen. Oder alternativ tags: false bei der Initialisierung von Select2. Tags sind nur aktiviert if the tags option is truthy, die es ist, wenn Sie in true übergeben werden.

+0

ich bin für den folgenden [visuellen Effekt] suchen (https://camo.githubusercontent.com/d700cc5a313d0dfb98450132b62e1da0fd727ef1/687474703a2f2f6165686c6b652e6769746875622e636f6d2f7461672d69742f5f7374617469632f73637265656e73686f742e706e67). Wenn ich "Tags: false" (oder einfach weglassen) wähle, wird es zu einer Auswahlbox zurückgehen. In meinem Fall muss es eher wie [tag-it] (http://aehlke.github.io/tag-it/) funktionieren als eine Auswahlbox. – tftd

+0

Ich bin mir nicht ganz sicher, was du meinst, und leider ohne einen Blick auf jsfiddle/jsbin (was du im Moment hast, was du willst), ist es schwierig, etwas über die Frage in deinem Titel zu beantworten. Ich bin mir nicht sicher, was du mit "gehe zurück zu einer Auswahlbox" meinst. Suchen Sie zufällig die Option "multiple"? –

+0

Ich habe es wahrscheinlich nicht gut genug erklärt - tut mir leid. Was ich meinte ist, dass wenn ich 'tags: false 'entferne, wird es eine Auswahlbox wie das [Loading remote data] (https://select2.github.io/examples.html) Beispiel. Ich habe meine Frage aktualisiert. Hoffe das macht mehr Sinn? – tftd

15

Ich habe auch mit diesen zu kämpfen, bekam aber schon nach wenigen Stunden zu arbeiten.

Ich hatte ein paar Token-Trennzeichen angegeben (weil meine Besucher Tags an einer anderen Stelle auf der Website erstellen dürfen). Es stellt sich heraus, dass die Separatoren immer noch angewendet werden, auch wenn die tags Konfiguration auf false eingestellt ist.

Lösung: tags: false und fügen Sie keinen Wert für tokenSeperators hinzu. Halten Sie multiple: true.