Terkadang saya menggunakan jangkar yang ditata sebagai tombol dan terkadang saya hanya menggunakan tombol. Saya ingin menonaktifkan hal-hal tertentu untuk:
- Mereka terlihat dinonaktifkan
- Mereka berhenti diklik
Bagaimana saya bisa melakukan ini?
jquery
html
css
twitter-bootstrap
biofractal
sumber
sumber
role="button"
untuk tautan, tetapi itu tampaknya tidak mempengaruhi masalah ini. getbootstrap.com/css/#buttonsa.btn[disabled]
dinonaktifkan namun tetap dapat diklik adalah bug di Bootstrap IMO. Atribut[disabled]
seharusnya hanya dinonaktifkan untukbutton
daninput
.Jawaban:
Tombol
Tombol-
disabled
tombolnya mudah dinonaktifkan karena merupakan properti tombol yang ditangani oleh browser:Untuk menonaktifkannya dengan fungsi jQuery khusus, Anda cukup menggunakan
fn.extend()
:Tombol JSFiddle dinonaktifkan dan input demo .
Kalau tidak, Anda akan menggunakan
prop()
metode jQuery :Tag Jangkar
Perlu dicatat bahwa
disabled
ini bukan properti yang valid untuk tag anchor. Karena alasan ini, Bootstrap menggunakan gaya berikut pada.btn
elemen - elemennya:Perhatikan bagaimana
[disabled]
properti ditargetkan serta.disabled
kelas. The.disabled
kelas adalah apa yang dibutuhkan untuk membuat tag anchor muncul dinonaktifkan.Tentu saja, ini tidak akan mencegah tautan berfungsi saat diklik. Tautan di atas akan membawa kita ke http://example.com . Untuk mencegah hal ini, kita dapat menambahkan sepotong kode jQuery sederhana ke tag anchor target dengan
disabled
kelas untuk memanggilevent.preventDefault()
:Kita dapat beralih
disabled
kelas dengan menggunakantoggleClass()
:Demo tautan JSFiddle dinonaktifkan .
Gabungan
Kami kemudian dapat memperluas fungsi menonaktifkan sebelumnya yang dibuat di atas untuk memeriksa jenis elemen yang kami coba nonaktifkan gunakan
is()
. Dengan cara ini kita dapattoggleClass()
jika itu bukan elemeninput
ataubutton
elemen, atau beralihdisabled
properti jika:Demo JSFiddle gabungan lengkap .
Perlu dicatat lebih lanjut bahwa fungsi di atas juga akan berfungsi pada semua tipe input.
sumber
return false if $(@).prop('disabled')
penangan klik khusus? Tanpa garis itu, penangan dijalankan tanpa peduli.disabled
bukan properti anchor tag yang valid, jadi itu tidak boleh digunakan. Acara klik yang saya berikan didasarkan pada.disabled
kelas, tetapi yang dapat Anda gunakan adalahhasClass('disabled')
- jika itu benarpreventDefault
,.disabled
properti di jangkar. Ini objek yang dinamis jadi saya bisa mengatur dan menggunakannya, seperti saya memperpanjang set fitur anchor? Saya telah memperbarui jawaban saya di bawah ini untuk menunjukkan ini. Bagaimana menurut anda? Apakah itu jahat? Juga, apakah Anda harus.off()
dalampreventDefault
acara klik saat Anda mengaktifkan kembali link?disabled
properti khusus , Anda dapat menggunakandata-*
atribut . Karena Bootstrap sudah menerapkandisabled
gaya properti yang sama denganclass="disabled"
Anda, Anda mungkin juga bergantung pada kelas.preventDefault
ke semua acara anchor klik maka saya harus melepaskannya ketika tautan diaktifkan kembali. Atau apakah saya salah paham akan sesuatu?Saya tidak bisa memikirkan cara yang lebih sederhana / lebih mudah! ;-)
Menggunakan Tag Anchor (Tautan):
Untuk mengaktifkan tag Anchor:
Untuk menonaktifkan tag Anchor:
sumber
Misalkan Anda memiliki bidang teks dan tombol kirim,
Menonaktifkan:
Untuk menonaktifkan tombol apa saja, misalnya, kirimkan tombol Anda hanya perlu menambahkan atribut yang dinonaktifkan sebagai,
Setelah menjalankan baris di atas, tag html tombol kirim Anda akan terlihat seperti ini:
Perhatikan bahwa atribut 'dinonaktifkan' telah ditambahkan .
Mengaktifkan:
Untuk mengaktifkan tombol, seperti ketika Anda memiliki beberapa teks di bidang teks. Anda harus menghapus atribut disable untuk mengaktifkan tombol sebagai,
Sekarang kode di atas akan menghapus atribut 'dinonaktifkan'.
sumber
Saya tahu saya terlambat ke pesta, tetapi secara khusus menjawab dua pertanyaan:
"Saya hanya ingin menonaktifkan hal-hal tertentu untuk:
Seberapa keras ini bisa terjadi? "
Mereka berhenti mengklik
1. Untuk tombol suka
<button>
atau<input type="button">
Anda tambahkan atribut:disabled
.2. Untuk tautan, tautan APA PUN ... sebenarnya, elemen HTML apa pun, Anda dapat menggunakan peristiwa pointer CSS3 .
Dukungan browser untuk acara pointer sangat luar biasa menurut perkembangan terkini (5/12/14). Tapi kami biasanya harus mendukung browser lawas di ranah IE, jadi IE10 dan di bawah JANGAN mendukung acara pointer: http://caniuse.com/pointer-events . Jadi menggunakan salah satu solusi JavaScript yang disebutkan oleh orang lain di sini mungkin merupakan cara untuk menggunakan browser lawas.
Info lebih lanjut tentang acara pointer:
Mereka terlihat dinonaktifkan
Jelas ini jawaban CSS, jadi:
1. Untuk tombol suka
<button>
atau<input type="button">
gunakan[attribute]
pemilih:-
Berikut ini adalah demo dasar dengan hal-hal yang saya sebutkan di sini: http://jsfiddle.net/bXm5B/4/
Semoga ini membantu.
sumber
Jika, seperti saya, Anda hanya ingin menonaktifkan tombol, jangan lewatkan jawaban sederhana yang tersembunyi di utas panjang ini:
sumber
@ James Donnelly telah memberikan jawaban komprehensif yang bergantung pada perluasan jQuery dengan fungsi baru. Itu ide yang bagus, jadi saya akan mengadaptasi kodenya sehingga berfungsi seperti yang saya inginkan.
Memperluas jQuery
Pemakaian
Kode akan memproses elemen tunggal atau daftar elemen.
Tombol dan Input mendukung
disabled
properti dan, jika diatur ketrue
, mereka akan terlihat dinonaktifkan (terima kasih untuk bootstrap) dan tidak akan menyala ketika diklik.Jangkar tidak mendukung properti yang dinonaktifkan jadi alih-alih kami akan bergantung pada
.disabled
kelas untuk membuat mereka terlihat dinonaktifkan (terima kasih untuk bootstrap lagi) dan menghubungkan acara klik default yang mencegah klik dengan mengembalikan false (tidak perlu untukpreventDefault
melihat di sini ) .Catatan : Anda tidak perlu melepas kaitan acara ini saat mengaktifkan kembali jangkar. Cukup dengan menghapus
.disabled
kelas, lakukan triknya.Tentu saja, ini tidak membantu jika Anda telah melampirkan handler klik kustom ke tautan, sesuatu yang sangat umum saat menggunakan bootstrap dan jQuery. Jadi untuk mengatasi ini kita akan menggunakan
isDisabled()
ekstensi untuk menguji.disabled
kelas, seperti ini:Saya harap itu membantu menyederhanakan banyak hal.
sumber
Perhatikan bahwa ada masalah aneh jika Anda menggunakan tombol JS Bootstrap dan status 'memuat'. Saya tidak tahu mengapa ini terjadi, tetapi inilah cara memperbaikinya.
Katakanlah Anda memiliki tombol dan Anda mengaturnya ke status memuat:
Sekarang Anda ingin mengeluarkannya dari status pemuatan, tetapi juga menonaktifkannya (mis. Tombolnya adalah tombol Simpan, status pemuatan menunjukkan validasi yang sedang berlangsung dan validasi gagal). Ini terlihat seperti Bootstrap JS yang masuk akal:
Sayangnya, itu akan mengatur ulang tombol, tetapi tidak menonaktifkannya. Rupanya,
button()
melakukan beberapa tugas yang tertunda. Jadi, Anda juga harus menunda penonaktifan Anda:Agak menyebalkan, tapi itu pola yang sering saya gunakan.
sumber
Jawaban dan kontribusi luar biasa dari semua! Saya harus sedikit memperluas fungsi ini untuk menyertakan penonaktifan elemen terpilih:
Tampaknya bekerja untuk saya. Terima kasih semuanya!
sumber
Untuk perilaku semacam itu saya selalu menggunakan
button
widget jQueryUI , saya menggunakannya untuk tautan dan tombol.Tetapkan tag dalam HTML:
Gunakan jQuery untuk menginisialisasi tombol:
Gunakan
button
metode widget untuk menonaktifkan / mengaktifkannya:Itu akan menangani tombol dan perilaku kursor, tetapi jika Anda perlu lebih dalam dan mengubah gaya tombol saat dinonaktifkan maka timpa kelas CSS berikut dalam file gaya CSS halaman Anda.
Tapi ingat: kelas-kelas CSS (jika diubah) akan mengubah gaya untuk widget lain juga.
sumber
Berikut ini telah bekerja dengan baik untuk saya:
sumber
Ini adalah jawaban yang agak terlambat, namun saya menemukan pertanyaan ini sambil mencari cara untuk menonaktifkan tombol boostrap setelah mengkliknya dan mungkin menambahkan efek yang bagus (fe a spinner). Saya telah menemukan perpustakaan hebat yang melakukan hal itu:
http://msurguy.github.io/ladda-bootstrap/
Anda cukup memasukkan css dan js yang diperlukan, tambahkan beberapa properti ke tombol Anda dan aktifkan lada dengan javascript ... Presto! Tombol Anda memiliki kehidupan baru (silakan periksa demo untuk melihat betapa indahnya itu)!
sumber
Ini di atas tidak berfungsi karena kadang-kadang
sesuaikan kode Anda dengan
sumber
Saya tahu jawaban saya terlambat, tetapi IMO ini adalah cara termudah untuk mengganti Tombol 'aktifkan' dan tombol 'nonaktifkan'
sumber
Misalkan Anda memiliki tombol-tombol ini pada halaman seperti:
Kode js:
sumber
Katakanlah Anda memiliki yang terlihat seperti ini yang saat ini diaktifkan.
Cukup tambahkan ini:
dan Anda akan mendapatkan ini yang akan menonaktifkan tombol
sumber
disabled
properti tidak properti berlaku untuk tag anchor.Jika Anda ingin menonaktifkan yang dapat diklik, Anda juga dapat menambahkan inline ini dalam html
sumber