2013-05-13 12 views
33

Używam Select2 3.3.2select2 - Ustawianie różnej szerokości do wprowadzania i rozwijania

Mam bardzo bardzo długie opcje w wyborze. przykład:

<select id="e1"> 
<option value="AL">Alabama</option> 
<option value="WY">Wyoming</option> 
<option value="WY">very long long long text</option> 
<option value="WY">very long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long long text</option> 
</select> 

Celem jest uniknięcie owijanie opcji gdy rozwijana otworzy.

Chciałbym ustawić długą szerokość rozwijanego menu po otwarciu (na przykład - 800px, a nawet automatycznie ocenianą szerokość).

Aby zachować dane wejściowe o małej szerokości, gdy menu rozwijane jest zamknięte (na przykład 300 pikseli).

Poszłam za tym numerem "Add option to set dropdown width" select2.

Ale nie mogłem go uruchomić, szerokość opcji/rozwijania jest taka sama jak szerokość wejściowa i opcje jako zawijane do wielu linii.

Oto demo z moim problemem w jsfiddle - http://jsfiddle.net/ewwAX/

Dziękuję wszystkim z góry za pomoc.

Odpowiedz

52

Używana właściwość nie służy do kontrolowania szerokości rozwijanej. Możesz użyć właściwości dropdownCssClass.

Here's a demo in jsFiddle.

JavaScript:

$(document).ready(function() { 
    $("#e1").select2({dropdownCssClass : 'bigdrop'}); 
}); 

CSS:

.bigdrop { 
    width: 600px !important; 
} 
+1

Cześć, możesz mi pomóc też chcę, że spadek w dół powinien być szeroki, jak jej tam w skrzypcach, ale gdy wybrany powinien być z powrotem do swojej normalnej szerokości bez względu na to, jak szeroki termin jest –

+1

@NK - Zobacz odpowiedź Dave'a Amphletta poniżej. To działa dla mnie. – w00ngy

+0

@NK jeśli zmienisz jsfiddle, aby użyć klasy css (zamiast identyfikatora), zostanie użyta właściwość width (dla stanu zamkniętego) – roberkules

58

Wybór2 zawiera parametr 'dropdownAutoWidth' która wykorzystuje JavaScript próbować być na tyle szeroki, za treść rozwijanej.

$('#whatever').select2({dropdownAutoWidth : true}); 

To przynajmniej działa z Select2 3.4.3 - Nie wiem ile wcześniej zostało wprowadzone.

+9

Nie działa w wersji 4.0.0-rc.2 – Cocowalla

+1

Działa to dla mnie w 3.5.4 –

+2

Działa w 4.0.2. – Brett

1

Oto jak zrobić select2 szersza tylko wtedy, gdy jego otwarty:

Jeśli chcesz go rozwijać prawą stronę, dodaj CSS:

.select2-container.select2-dropdown-open { 
    width: 170%; 
    } 

jeśli chcesz, aby rozwinąć w lewo, dodać ten {

.select2-container.select2-dropdown-open { 
    width: 170%; 
    margin-left: -70%; 
    } 
1

użyłem tego i to działało idealnie, tylko, że to wpłynie na cały select2

#select2-drop{ 
    width: 400px !important; 
} 
+0

' ' – kimoduor

+0

Ważne! Może również nie sprawi, że będzie reagować. – kimoduor

9

Jeszcze lepsze rozwiązanie.Zastosowanie:

$('#e1').select2({width: 'resolve'}); 
+0

To jest teraz prawdziwe. Ta opcja nie była dostępna w momencie zadawania pytania (2013) – Yeronimo

+0

Próbowałem, ale nie działa ze mną? czy możesz powiedzieć mi dlaczego ? – huykon225

+0

Dzięki. Rozwiązuje to wiele problemów związanych z szerokością zarówno wybranego pola, jak i opcji. – Nirmal

Powiązane problemy