Czy jest coś z pudełka, co obsługuje bootstrap, aby renderować „standardowe” pole wyboru listy rozwijanej defacto? To znaczy, gdzie w rozwijanym polu znajduje się lista wartości, a jeśli wybrano, wypełnij zawartość pola listy?
Coś podobnego do tej funkcjonalności?
twitter-bootstrap
genxgeek
źródło
źródło
<select>
. podczas gdy bootstrap wykorzystuje<ul>
do rozwijania, jest to ostatecznie wprowadzające w błąd użycie tego tagu. Biorąc pod uwagę całą pompę JQuery w bootstrapie, zastanawiam się, dlaczego nie zmienili karetki wyboru. Wydawałoby się to o wiele bardziej wdzięcznym rozwiązaniem niż sprzeniewierzenieul
.Odpowiedzi:
Bootstrap 3 wykorzystuje
.form-control
klasę do stylowania komponentów formularza.http://getbootstrap.com/css/#forms-controls
źródło
bootstrap.js
. Kluczową różnicą wizualną między tym a „pełnym” rozwiązaniem bootstrap (o którym wspomina @JonathanEdwards) jest to, że menu, które się pojawia, jest bardziej obskurne, mniej ładne, jakalert
pole przeglądarki. Naprawdę mały problem. Jednak niewybrany selektor wygląda dokładnie tak samo jak selektor Bootstrap.Inną opcją jest sprawienie, aby rozwijane menu Bootstrap zachowywało się jak zaznaczenie za pomocą jQuery ...
http://www.bootply.com/b4NKREUPkN
źródło
Ładna i łatwa odpowiedź Skelly jest teraz nieaktualna wraz ze zmianami w składni rozwijanej w Bootstap. Zamiast tego użyj tego:
źródło
Test: http://jsfiddle.net/brynner/hkwhaqsj/6/
HTML
jQuery
CSS
źródło
Inną opcją może być użycie wyboru bootstrap . Własnymi słowami:
źródło
Innym sposobem bez korzystania z .form-control jest:
źródło
Kod Bena wymaga, aby div nadrzędny miał klasę form-group (użyłem btn-group), jest to nieco inna wersja, która szuka najbliższego div i może być nawet nieco szybsza.
źródło
Bootstrap3
.form-control
jest fajny, ale dla tych, którzy kochają lub potrzebują rozwijanego menu z opcją przycisku i ul, oto zaktualizowany kod. Edytowałem kod przez Steve'a, aby naprawić przeskakiwanie do linku mieszającego i zamykanie menu rozwijanego po zaznaczeniu.Dzięki Steve, Ben i Skelly!
źródło
Obecnie walczę z listami rozwijanymi i chciałbym podzielić się swoimi doświadczeniami:
Istnieją szczególne sytuacje, w których
<select>
nie można ich użyć i należy je „emulować” za pomocą menu rozwijanego.Na przykład, jeśli chcesz utworzyć grupy wejściowe ładowania początkowego, takie jak Przyciski z listami rozwijanymi (patrz http://getbootstrap.com/components/#input-groups-buttons-dropdowns ). Niestety
<select>
nie jest obsługiwany w grupach wejściowych, nie będzie poprawnie renderowany.Czy ktoś już to rozwiązał? Byłbym bardzo zainteresowany rozwiązaniem.
I aby uczynić to jeszcze bardziej skomplikowanym, nie możesz użyć tak po prostu,
$(this).text()
aby złapać tego, który użytkownik wybrał w menu rozwijanym, jeśli używasz glypiconów lub czcionek niesamowite ikony jako zawartość do rozwijania. Na przykład:<li id="someId"><a href="#0"><i class="fa fa-minus"></i></a></li>
Ponieważ w tym przypadku nie ma tekstu, a jeśli go dodasz, zostanie on również wyświetlony w rozwijanym elemencie i jest to niepożądane.Znalazłem dwa możliwe rozwiązania:
1) Użyj,
$(this).html()
aby uzyskać zawartość wybranego<li>
elementu, a następnie ją zbadać, ale dostaniesz coś takiego,<a href="#0"><i class="fa fa-minus"></i></a>
więc musisz się tym pobawić, aby wyodrębnić to, czego potrzebujesz.2) Wykorzystanie
$(this).text()
i ukryć tekst w elemencie w ukrytym rozpiętości:<li id="someId"><a href="#0"><i class="fa fa-minus"><span class="hidden">text</span></i></a></li>
. Dla mnie jest to proste i eleganckie rozwiązanie, możesz umieścić dowolny potrzebny tekst, tekst zostanie ukryty i nie musisz wykonywać żadnych transformacji$(this).html()
wyniku, jak w opcji 1), aby uzyskać to, czego potrzebujesz.Mam nadzieję, że to jasne i może komuś pomóc :-)
źródło