Mam bardzo dziwny wymóg, w którym nie muszę domyślnie wybierać żadnej opcji w rozwijanym menu HTML. Jednak,
Nie mogę tego użyć
<select>
<option></option>
<option>Option 1</option>
<option>Option 2</option>
<option>Option 3</option>
</select>
Ponieważ w tym celu będę musiał przeprowadzić walidację, aby obsłużyć pierwszą opcję. Czy ktoś może mi pomóc w osiągnięciu tego celu bez faktycznego włączenia pierwszej opcji w tagu select?
Odpowiedzi:
Może to będzie pomocne
-- select an option --
Będzie wyświetlany domyślnie. Ale jeśli wybierzesz opcję, nie będziesz mógł jej wybrać ponownie.Możesz go również ukryć, dodając pusty
option
<option style="display:none">
więc nie pojawi się już na liście.
Opcja 2
Jeśli nie chcesz pisać CSS i oczekujesz tego samego zachowania powyższego rozwiązania, po prostu użyj:
<option hidden disabled selected value> -- select an option -- </option>
źródło
<option hidden disabled selected value> -- select an option -- </option>
Aby to osiągnąć, możesz użyć Javascript. Wypróbuj następujący kod:
HTML
JS
lub JQuery
źródło
required
atrybutuselect
elementu i prześlesz bez wybierania opcji, sprawdzanie poprawności formularza zakończy się niepowodzeniem i powie Ci, że musisz dokonać wyboru. Dlatego naprawdę podoba mi się to podejście. (Przynajmniej testowany w Chrome)Dzisiaj (2015-02-25)
Jest to poprawny HTML5 i wysyła puste miejsce (nie spację) do serwera:
Zweryfikowana ważność na http://validator.w3.org/check
Zweryfikowane zachowanie w Win7 (IE11 IE10 IE9 IE8 FF35 Safari5.1) Ubuntu14.10 (Chrome40, FF35) OSX_Yosemite (Safari8, Chrome40) Android (Samsung-Galaxy-S5)
Następujące również przechodzi sprawdzanie poprawności , co dzisiaj , , ale przekazuje również znak spacji do serwera z większości przeglądarek (prawdopodobnie nie jest to pożądane) i spacje na innych (Chrome40 / Linux przekazuje spację):
Wcześniej (2013-08-02)
Zgodnie z moimi notatkami jednostka niepodzielna w obrębie tagów opcji pokazanych powyżej spowodowała następujący błąd w 2013 r .:
W tym czasie normalne miejsce było poprawne XHTML4 i wysyłało puste (nie spację) do serwera z każdej przeglądarki:
Przyszłość
Zadowoliłbym moje serce, gdyby specyfikacja została zaktualizowana, aby wyraźnie zezwalać na pustą opcję. Najlepiej przy użyciu najkrótszej składni. Każda z poniższych opcji byłaby świetna:
Plik testowy
źródło
Po prostu ustaw „ukryty” na opcji, którą chcesz ukryć na liście rozwijanej.
źródło
Rozwiązanie, które działa tylko przy użyciu CSS:
Odp .: Inline CSS
B: Arkusz stylów CSS
Jeśli masz pod ręką plik CSS, możesz kierować reklamy na pierwsze
option
za pomocą:źródło
To powinno pomóc:
https://www.w3schools.com/tags/att_select_required.asp
źródło
W takim przypadku możesz uniknąć niestandardowej weryfikacji.
źródło
Tylko mała uwaga:
niektóre przeglądarki Safari wydają się nie respektować ani atrybutu „ukryty”, ani ustawienia stylu „display: none” (testowane z Safari 12.1 pod MacOS 10.12.6). Bez wyraźnego tekstu zastępczego przeglądarki te po prostu pokazują pusty pierwszy wiersz na liście opcji. Dlatego przydatne może być zawsze podanie tekstu objaśniającego do tego „obojętnego” wpisu:
Dzięki atrybutowi „wyłączony” i tak nie zostanie aktywnie wybrany.
źródło
Rozumiem, co próbujesz zrobić. Najlepszym i najskuteczniejszym sposobem jest:
źródło
Uznałem to za bardzo interesujące, ponieważ niedawno doświadczyłem tego samego. Jednak natknąłem się na przykład w Internecie na temat rozwiązania tego problemu.
Bez zbędnych ceregieli zobacz poniższy fragment kodu:
Dzięki temu pozostanie nieprzesłany, ale można go wybrać w dowolnym momencie. Większa wygoda dla interfejsu użytkownika i doskonała dla doświadczenia użytkownika.
Cóż, to wszystko, mam nadzieję, że to pomoże. Twoje zdrowie!
źródło
Nie ma rozwiązania HTML. Zgodnie ze specyfikacją HTML 4.01 zachowanie przeglądarki jest niezdefiniowane, jeśli żaden z
option
elementów nie ma tegoselected
atrybutu, a to, co robią przeglądarki w praktyce, polega na tym, że pierwsza opcja jest wstępnie wybrana.Aby obejść ten problem, można zastąpić
select
element zestaweminput type=radio
elementów (z tym samymname
atrybutem). Tworzy to kontrolę tego samego rodzaju, jednak z innym wyglądem i interfejsem użytkownika. Jeśli żaden zinput type=radio
elementów nie ma tegochecked
atrybutu, żaden z nich nie jest początkowo wybrany w większości nowoczesnych przeglądarek.źródło
Używam frameworka Laravel 5 i odpowiedź @Gambi również zadziałała dla mnie, ale z pewnymi zmianami w moim projekcie.
Mam wartości opcji w tabeli bazy danych i używam ich z instrukcją foreach. Ale przed stwierdzeniem dodałem opcję z sugerowanymi ustawieniami @Gambit i zadziałało.
Oto mój przykład:
Mam nadzieję, że to też komuś pomoże. Tak trzymaj!
źródło
Spróbuj tego:
Pierwsza opcja w menu byłaby pusta.
źródło
Aby wyświetlić, wybierz wartość z listy rozwijanej i ukryj ją po wybraniu określonej wartości. użyj poniższego kodu.
będzie również obsługiwać wymaganą weryfikację.
źródło
Jeśli używasz Angulara (2+), (lub innego frameworka), możesz dodać trochę logiki. Logika wyglądałaby następująco: wyświetl pustą opcję tylko wtedy, gdy użytkownik jeszcze nie wybrał żadnej innej opcji. Po wybraniu opcji przez użytkownika pusta opcja znika.
W przypadku Angulara (9) wyglądałoby to mniej więcej tak:
źródło
Spróbuj tego:
Sprawdza poprawność w HTML5. Działa z
required
atrybutem w elemencie select. Można ponownie wybrać. Działa w Google Chrome 45, Internet Explorer 11, Edge, Firefox 41.źródło