Solusi Kyle bekerja dengan sangat baik untuk saya jadi saya melakukan penelitian untuk menghindari Js dan CSS, tetapi hanya bertahan dengan HTML. Menambahkan nilai selected
ke item yang ingin kita munculkan sebagai tajuk memaksanya untuk tampil di tempat pertama sebagai placeholder. Sesuatu seperti:
<option selected disabled>Choose here</option>
Markup lengkap harus berada di sepanjang garis ini:
<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>
Anda bisa melihat biola ini , dan inilah hasilnya:
Jika Anda tidak ingin jenis teks tempat penampung muncul tercantum dalam opsi setelah pengguna mengklik kotak pilih cukup tambahkan hidden
atribut seperti ini:
<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>
Periksa biola di sini dan tangkapan layar di bawah.
hidden
atribut , yang digunakan dalam jawaban di atas, adalah atribut yang dapat diatur pada setiap elemen HTML, dan biasanya (tetapi tidak selalu) dilaksanakan untuk menjadi setara dengan pengaturandisplay: none
dengan CSS.hidden
padaoption
dalamselect
tidak bekerja di Safari, di kedua iOS atau Mac. Jadi, jawaban ini hanya menawarkan dukungan browser sebagian.Inilah solusinya:
sumber
selected="true"
itu tidak valid. Sebagai gantinya, gunakanselected="selected"
dalam (X) HTML atau hanyaselected
di HTML. Sepertinya Anda bingungselected
atribut denganselected
properti, yang diubah seperti ini:myOption.selected = true;
ataumyOption.selected = false;
hidden
(yang "biasanya diterapkan dalam CSS"display: none
tetap menggunakan ), menggunakandisplay: none
on anoption
tidak berfungsi di Safari; opsi masih muncul.Cara yang tepat dan semantik adalah menggunakan opsi label placeholder :
option
elemen sebagai anak pertama dariselect
value
= ""
option
option
required
atribut keselect
Hal ini akan memaksa pengguna untuk memilih pilihan lain agar dapat mengirimkan formulir, dan browser harus membuat yang
option
seperti yang diinginkan:Namun, sebagian besar browser akan membuatnya seperti biasa
option
. Jadi kita harus memperbaikinya secara manual, dengan menambahkan yang berikut ini keoption
:selected
atribut, untuk membuatnya dipilih secara defaultdisabled
atribut, untuk membuatnya non-dipilih oleh penggunadisplay: none
, untuk menyembunyikannya dari daftar nilaisumber
hidden
atribut ke tag opsi placeholder alih-alihdisplay: none
karena tampaknya sebagian besar browser seluler mengabaikandisplay: none
atribut CSS dan itu bahkan lebih semantik menurut pendapat saya.hidden
umumnya diterapkan seperti didisplay: none
bawah tenda (dan spesifikasi secara eksplisit menyarankan ini sebagai implementasi "khas"). Karena itu, saya akan terkejut jika ada browser - seluler atau lainnya - yanghidden
berfungsi tetapidisplay: none
tidak berhasil. Bisakah Anda memberikan contoh?Karena Anda tidak dapat menggunakan placeholder tetapkan untuk
select
tag, saya tidak percaya bahwa ada cara untuk melakukan apa yang Anda minta dengan HTML / CSS murni. Namun, Anda dapat melakukan sesuatu seperti ini:"Pilih bahasa" akan muncul di tarik-turun, tetapi setelah opsi lain dipilih, Anda tidak dapat memilihnya kembali.
Saya harap itu membantu.
sumber
Coba ini:
Di CSS:
sumber
Saya punya solusi dengan rentang yang ditampilkan di atas pilih sampai seleksi selesai. Span menampilkan pesan default, sehingga tidak ada dalam daftar proposisi:
HTML:
CSS:
Javascript (dengan JQuery):
Saya telah membuat jsfiddle untuk demo . Diuji dengan Firefox dan IE8.
sumber
span
di sana digunakanlegend
dan itu akan menjadi sempurna ataulabel
pointer-events: none
span untuk memungkinkan klik melewati untuk memilih.Anda tentu saja dapat memindahkan css ke file css jika Anda mau, dan meletakkan skrip untuk menangkap
esc
tombol untuk memilih yang dinonaktifkan lagi. Berbeda dengan jawaban serupa lainnya yang saya masukkanvalue=""
, ini jadi jika Anda mengirim nilai daftar pilihan Anda dengan formulir, itu tidak akan berisi "memilih sesuatu". Dalam asp.net mvc 5 dikirim sebagai json yang dikompilasi denganvar obj = { prop:$('#ddl').val(),...};
danJSON.stringify(obj);
nilai prop akan menjadi null.sumber
Op1:
Op2:
sumber