Nawet jeśli ta kwestia była tu przez jakiś czas i prawdopodobnie przezwyciężyła, miałem te same wątpliwości i myślę, że powinienem podzielić się tym, co mam.
@Spokey odpowiedź jest bardzo dobra i działa. Działa to jednak tylko wtedy, gdy dokonujesz prostego wyboru. Jeśli chcesz utworzyć pole wyboru wielokrotnego, sprawa stanie się nieco trudniejsza, ponieważ Select2 nie zapewnia żadnego unikalnego atrybutu, aby łatwo znaleźć każdą wybraną opcję.
Odczytanie odpowiedzi naHyperLink, zmieniłem sposób myślenia i wreszcie uzyskałem działający wynik. Byłoby trochę ciężko, jeśli naprawdę chcesz przekazać tylko wartość do pokazania, zmarnowałem kilka godzin próbując to zrobić. Ale o nowe podejście tak, wszystko staje się łatwiejsze:
<select name="convert-to" id="convert-to" multiple>
<option value="AUD">AUD - Australian Dollar</option>
<option value="USD">USD - US Dollar</option>
<option value="JPY">JPY - Japanese Yen</option>
<option value="EUR">EUR - Euro</option>
<option value="GBP">GBP - British Pound</option>
<option value="CAD">CAD - Canadian Dollar</option>
<option value="HKD">HKD - Hong Kong Dollar</option>
</select>
Wystarczy dodany jaka wartość jest na prawdziwym tekstem, który prawdopodobnie nie będzie mieć duże znaczenie dla użytkownika, ale dla nas, to pomoże los. Główną różnicą od drugiej odpowiedzi javascript, jest change(function(){})
:
change(function() {
var options = $('.select2-search-choice > div');
i = 1;
Array.prototype.forEach.call(options, function(o) {
o.id = 'choice'+i; // optional, creating ids to
i++; // find it easily if you want
aux = o.textContent.split(" - "); // Divide value from text
o.textContent = aux[0]; // Get first part, i.e, value
console.log(aux);
})
Try it here