Mam, select
który początkowo pokazuje Wybierz język, dopóki użytkownik nie wybierze języka. Gdy użytkownik otworzy wybór, nie chcę, aby była wyświetlana opcja Wybierz język , ponieważ nie jest to rzeczywista opcja.
Jak mogę to osiągnąć?
źródło
Mam, select
który początkowo pokazuje Wybierz język, dopóki użytkownik nie wybierze języka. Gdy użytkownik otworzy wybór, nie chcę, aby była wyświetlana opcja Wybierz język , ponieważ nie jest to rzeczywista opcja.
Jak mogę to osiągnąć?
Rozwiązanie Kyle'a działało idealnie dla mnie, więc przeprowadziłem badania, aby uniknąć wszelkich Js i CSS, ale po prostu trzymałem się HTML. Dodanie wartości selected
do elementu, który ma być wyświetlany jako nagłówek, wymusza na nim wyświetlanie w pierwszej kolejności jako symbolu zastępczego. Coś jak:
<option selected disabled>Choose here</option>
Kompletne oznaczenie powinno wyglądać następująco:
<select>
<option selected disabled>Choose here</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
<option value="4">Four</option>
<option value="5">Five</option>
</select>
Możesz spojrzeć na to skrzypce , a oto wynik:
Jeśli nie chcesz, aby rodzaj tekstu zastępczego pojawiał się w opcjach po kliknięciu przez użytkownika pola wyboru, po prostu dodaj hidden
atrybut w następujący sposób:
<select>
<option selected disabled hidden>Choose here</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
<option value="4">Four</option>
<option value="5">Five</option>
</select>
Sprawdź skrzypce tutaj i zrzut ekranu poniżej.
hidden
display: none
hidden
na zasadzieoption
w sposóbselect
nie działa w Safari, po obu iOS lub Mac. Ta odpowiedź oferuje zatem tylko częściową obsługę przeglądarki.Oto rozwiązanie:
źródło
selected="true"
jest to nieprawidłowe. Zamiast tego użyjselected="selected"
w (X) HTML lub po prostuselected
w HTML. Wygląda na to, że pomyliłeśselected
atrybut zselected
właściwością, który jest zmieniany w ten sposób:myOption.selected = true;
lubmyOption.selected = false;
hidden
(który jest „typowo realizowane w CSS” za pomocądisplay: none
tak), wykorzystującdisplay: none
na zasadzieoption
nie działa w Safari; opcja nadal się pojawia.Właściwym i semantycznym sposobem jest użycie opcji etykiety zastępczej :
option
element jako pierwsze dzieckoselect
value
= ""
option
option
required
atrybut doselect
To zmusi użytkownikowi wybrać inną opcję, aby móc wysłać formularz, a przeglądarek powinna uczynić
option
według potrzeb:Jednak większość przeglądarek wyrenderuje to normalnie
option
. Będziemy więc musieli to naprawić ręcznie, dodając następujące elementy dooption
:selected
Atrybut, aby wybrany domyślniedisabled
Atrybut, aby nie wybierane przez użytkownikadisplay: none
, aby ukryć go na liście wartościźródło
hidden
atrybut do zastępczego tagu opcji zamiast,display: none
jak się wydaje, większość przeglądarek mobilnych ignorujedisplay: none
atrybut CSS i moim zdaniem jest jeszcze bardziej poprawny semantycznie.hidden
jest ona generalnie implementowana jako „display: none
pod maską” (a specyfikacja wyraźnie sugeruje, że jest to „typowa” implementacja). W związku z tym zdziwiłbym się, gdyby jakieś przeglądarki - mobilne lub inne -hidden
działały, aledisplay: none
nie działały . Czy możesz podać jakiś przykład?Ponieważ nie możesz używać symboli zastępczych przypisania do
select
tagów, nie sądzę, aby można było zrobić dokładnie to, o co prosisz, za pomocą czystego HTML / CSS. Możesz jednak zrobić coś takiego:W menu pojawi się opcja „Wybierz język”, ale po wybraniu innej opcji nie będzie można jej ponownie wybrać.
Mam nadzieję że to pomogło.
źródło
Spróbuj tego:
W CSS:
źródło
Mam rozwiązanie z zakresem wyświetlanym powyżej zaznaczenia, aż do zakończenia wyboru. Rozpiętość wyświetla domyślny komunikat, więc nie ma go na liście propozycji:
HTML:
CSS:
Javascript (z JQuery):
Zrobiłem jsfiddle na wersję demonstracyjną . Testowane z przeglądarką Firefox i IE8.
źródło
span
tam używaćlegend
i byłoby idealnie lublabel
pointer-events: none
swojego zakresu, aby umożliwić przejście kliknięć w celu wybrania.możesz oczywiście przenieść css do pliku css, jeśli chcesz, i umieścić skrypt, aby złapać
esc
przycisk, aby ponownie wybrać wyłączony. W przeciwieństwie do innych podobnych odpowiedzi, które umieściłemvalue=""
, jest tak, więc jeśli wyślesz wartości z listy wyboru za pomocą formularza, nie będzie ona zawierać „wybierz coś”. W asp.net mvc 5 wysłany jako json skompilowany z,var obj = { prop:$('#ddl').val(),...};
aJSON.stringify(obj);
wartość właściwości będzie równa null.źródło
Op1:
Op2:
źródło