Apakah mungkin untuk menonaktifkan kolom formulir menggunakan CSS? Saya tentu saja tahu tentang atribut yang dinonaktifkan, tetapi apakah mungkin untuk menentukan ini dalam aturan CSS? Sesuatu seperti -
<input type="text" name="username" value="admin" >
<style type="text/css">
input[name=username] {
disabled: true; /* Does not work */
}
</style>
Alasan saya bertanya adalah bahwa, saya memiliki aplikasi di mana bidang formulir di-autogenerasi, dan bidang disembunyikan / ditampilkan berdasarkan beberapa aturan (yang dijalankan dalam Javascript). Sekarang saya ingin memperluasnya untuk mendukung penonaktifan / mengaktifkan bidang, tetapi cara aturan ditulis untuk secara langsung memanipulasi properti gaya bidang formulir. Jadi sekarang saya harus memperluas mesin aturan untuk mengubah atribut serta gaya bidang formulir dan entah bagaimana tampaknya kurang ideal.
Sangat ingin tahu bahwa Anda memiliki properti yang terlihat dan ditampilkan di CSS tetapi tidak mengaktifkan / menonaktifkan. Apakah ada yang seperti itu dalam standar HTML5 yang masih dalam pengerjaan, atau bahkan sesuatu yang tidak standar (khusus browser)?
Jawaban:
Ini bisa membantu:
Memperbarui:
dan jika ingin menonaktifkan dari indeks tab Anda dapat menggunakannya dengan cara ini:
sumber
Anda dapat memalsukan efek yang dinonaktifkan menggunakan CSS.
Anda mungkin juga ingin mengubah warna dll.
sumber
Karena aturan berjalan dalam JavaScript, mengapa tidak menonaktifkannya menggunakan javascript (atau dalam contoh kasus saya, jQuery)?
MEMPERBARUI
The
attr
fungsi tidak lagi pendekatan utama untuk ini, seperti yang ditunjukkan di komentar di bawah. Ini sekarang dilakukan denganprop
fungsi.sumber
.prop()
alih-alih.attr()
untuk kasus ini. "Pada jQuery 1.6, metode .attr () mengembalikan undefined untuk atribut yang belum disetel. Untuk mengambil dan mengubah properti DOM seperti keadaan elemen elemen yang diperiksa, dipilih, atau dinonaktifkan, gunakan metode .prop (). " Sumber Dokumentasi: .attr () dan .prop ()Sangat ingin tahu bahwa Anda pikir itu sangat aneh. Anda salah memahami tujuan CSS. CSS tidak dimaksudkan untuk mengubah perilaku elemen formulir. Itu dimaksudkan untuk mengubah gaya mereka saja. Menyembunyikan bidang teks tidak berarti bidang teks sudah tidak ada lagi atau browser tidak akan mengirim datanya saat Anda mengirimkan formulir. Yang dilakukannya hanyalah menyembunyikannya dari mata pengguna.
Untuk benar-benar menonaktifkan bidang Anda, Anda harus menggunakan
disabled
atribut dalam HTML ataudisabled
properti DOM dalam JavaScript.sumber
pointer-events
menjadi properti CSS. FYI,pointer-events
berasal dari SVG .Anda tidak dapat menggunakan CSS untuk menonaktifkan Textbox. solusinya adalah Atribut HTML.
sumber
disabled
atribut tidak dikirimkan - nilainya tidak diposting ke server. Baca di: stackoverflow.com/q/8925716/1066234Solusi praktis adalah menggunakan CSS untuk benar-benar menyembunyikan input.
Untuk mengambil kesimpulan ini, Anda dapat menulis dua input html untuk setiap input aktual (satu diaktifkan, dan satu dinonaktifkan) dan kemudian menggunakan javascript untuk mengontrol CSS untuk menampilkan dan menyembunyikannya.
sumber
pertama kali menjawab sesuatu, dan sepertinya agak terlambat ...
Saya setuju melakukannya dengan javascript, jika Anda sudah menggunakannya.
Untuk struktur komposit, seperti yang biasanya saya gunakan, saya telah membuat elemen pseudo setelah css untuk memblokir elemen dari interaksi pengguna, dan memungkinkan gaya tanpa harus memanipulasi seluruh struktur.
Sebagai contoh:
Saya bisa menempatkan
disabled
kelas di bungkusnyadiv
Ini akan mengaburkan teks di dalam
div
dan membuatnya tidak dapat digunakan oleh pengguna.Contoh saya JSFiddle
sumber
Saya selalu menggunakan:
dan kemudian menerapkan kelas css ke bidang input:
sumber
Saya tahu pertanyaan ini cukup lama tetapi untuk pengguna lain yang menemukan masalah ini, saya kira cara termudah untuk menonaktifkan input adalah dengan ': dinonaktifkan'
Pada kenyataannya, jika Anda memiliki beberapa skrip untuk menonaktifkan input secara dinamis / otomatis dengan javascript atau jquery yang secara otomatis akan dinonaktifkan berdasarkan kondisi yang Anda tambahkan.
Di jQuery untuk Contoh:
Semoga jawaban dalam CSS membantu.
sumber
Anda tidak dapat melakukan itu, saya khawatir, tetapi Anda dapat melakukan hal berikut di jQuery, jika Anda tidak ingin menambahkan atribut ke bidang. Tempatkan ini di dalam
<head></head>
tag AndaJika Anda membuat bidang dalam DOM (dengan JS), Anda harus melakukan ini sebagai gantinya:
sumber
Ini dapat dilakukan untuk tujuan yang tidak kritis dengan meletakkan overlay di atas elemen input Anda. Inilah contoh saya dalam HTML dan CSS murni.
https://jsfiddle.net/1tL40L99/
sumber
Tidak ada cara untuk menggunakan CSS untuk tujuan ini. Saran saya adalah memasukkan kode javascript di mana Anda menetapkan atau mengubah kelas css yang diterapkan pada input. Sesuatu seperti itu :
sumber
Variasi untuk
pointer-events: none;
solusi, yang menyelesaikan masalah input masih dapat diakses melalui itu diberi label kontrol atau tabindex, adalah untuk membungkus input dalam div, yang ditata sebagai input teks yang dinonaktifkan, dan pengaturaninput { visibility: hidden; }
ketika input "dinonaktifkan" .Ref: https://developer.mozilla.org/en-US/docs/Web/CSS/visibility#Values
Gaya penonaktifan yang diterapkan dalam cuplikan di atas diambil dari UI Chrome dan mungkin tidak identik secara visual dengan masukan yang dinonaktifkan di peramban lain. Mungkin ini dapat dikustomisasi untuk masing-masing browser menggunakan perbaikan-ekstensi CSS khusus mesin. Meskipun sekilas, saya tidak berpikir itu bisa:
ekstensi Microsoft CSS , ekstensi Mozilla CSS , ekstensi WebKit CSS
Tampaknya jauh lebih masuk akal untuk memperkenalkan nilai tambahan
visibility: disabled
ataudisplay: disabled
atau bahkan mungkinappearance: disabled
, mengingat yangvisibility: hidden
sudah mempengaruhi perilaku elemen yang berlaku elemen kontrol terkait.sumber