Bagaimana cara menerapkan gaya ke kotak input kosong? Jika pengguna mengetikkan sesuatu di bidang input, gaya seharusnya tidak lagi diterapkan. Apakah ini dimungkinkan dalam CSS? Saya mencoba ini:
input[value=""]
css
input
css-selectors
Sjoerd
sumber
sumber
Di browser modern, Anda dapat menggunakan
:placeholder-shown
untuk menargetkan input kosong (jangan dikacaukan dengan::placeholder
).Info lebih lanjut dan dukungan browser: https://css-tricks.com/almanac/selectors/p/placeholder-shown/
sumber
Tidak ada pemilih dalam CSS yang melakukan ini. Selektor atribut cocok dengan nilai atribut, bukan nilai yang dihitung.
Anda harus menggunakan JavaScript.
sumber
:empty
pemilih hanya bekerja pada elemen kosong, artinya hanya pada elemen yang memiliki tag pembuka dan penutup yang kosong di antara, dan elemen tag tunggal yang dianggap selalu kosong, misalnya , sehingga tidak dapat digunakan pada elemen input kecualitextarea
Memperbarui nilai suatu bidang tidak memperbarui atribut nilainya di DOM sehingga itu sebabnya pemilih Anda selalu mencocokkan bidang, bahkan ketika itu sebenarnya tidak kosong.
Alih-alih menggunakan
invalid
pseudo-class untuk mencapai apa yang Anda inginkan, seperti:sumber
input[value=""], input:not([value])
bekerja dengan:
Tetapi gaya tidak akan berubah segera setelah seseorang mulai mengetik (Anda perlu JS untuk itu).
sumber
input[value=""], input:not([value])
.Jika mendukung browser lawas tidak diperlukan, Anda bisa menggunakan kombinasi
required
,valid
daninvalid
.Hal yang baik tentang penggunaan ini adalah
valid
daninvalid
elemen pseudo bekerja dengan baik dengan atribut tipe dari bidang input. Sebagai contoh:Untuk referensi, JSFiddle di sini: http://jsfiddle.net/0sf6m46j/
sumber
di jQuery. Saya menambahkan kelas dan ditata dengan css.
sumber
Ini bekerja untuk saya:
Untuk HTML, tambahkan
required
atribut ke elemen inputUntuk CSS, gunakan
:invalid
pemilih untuk menargetkan input kosongCatatan:
required
dari w3Schools.com : "Saat ini, ini menentukan bahwa bidang input harus diisi sebelum mengirimkan formulir."sumber
Pertanyaan ini mungkin telah ditanyakan beberapa waktu yang lalu, tetapi karena saya baru-baru ini mendarat di topik ini mencari validasi formulir sisi klien, dan karena
:placeholder-shown
dukungannya semakin baik, saya pikir yang berikut ini mungkin membantu orang lain.Menggunakan ide Berend tentang menggunakan pseudo-class CSS4 ini, saya dapat membuat validasi formulir yang dipicu setelah pengguna selesai mengisinya.
Berikut adalah ademo dan penjelasan tentang CodePen: https://codepen.io/johanmouchet/pen/PKNxKQ
sumber
Jika Anda senang tidak mendukung IE atau pra-Chromium Edge (yang mungkin baik jika Anda menggunakan ini untuk peningkatan progresif), Anda dapat menggunakan
:placeholder-shown
seperti yang dikatakan Berend. Perhatikan bahwa untuk Chrome dan Safari Anda benar-benar membutuhkan tempat penampung yang tidak kosong agar ini berfungsi, meskipun sebuah ruang berfungsi.sumber
Ini berhasil bagi saya untuk menambahkan nama kelas ke input dan kemudian menerapkan aturan CSS untuk itu:
sumber
Saya heran dengan jawaban yang kami miliki atribut yang jelas untuk mendapatkan kotak input kosong, lihat kode ini
MEMPERBARUI
Terlebih lagi karena memiliki tampilan yang bagus dalam validasi
sumber
:empty
hanya berlaku untuk elemen yang tidak memiliki anak. Input tidak dapat memiliki simpul anak sama sekali sehingga input Anda akan selalu dengan batas merah. Lihat juga komentar inivalue
tidak mengubah jumlah node anak.<parent><child></child></parent>
). Anda baru saja<input></input>
dan saat Anda mengetik apa yang berubah bukanlah<value>
simpul di dalamnya<input>
tetapi atribut nilai :<input value='stuff you type'></input>
Saya menyadari ini adalah utas yang sangat lama, tetapi banyak hal telah berubah sejak itu dan itu memang membantu saya menemukan kombinasi yang tepat dari hal-hal yang saya butuhkan untuk menyelesaikan masalah saya. Jadi saya pikir saya akan membagikan apa yang saya lakukan.
Masalahnya adalah saya nedded untuk memiliki css yang sama diterapkan untuk input opsional jika diisi, seperti yang saya miliki untuk diisi diperlukan. Css menggunakan kelas psuedo: valid yang menerapkan css pada input opsional juga saat tidak diisi.
Beginilah cara saya memperbaikinya;
HTML
CSS
sumber