Bagaimana cara menonaktifkan tombol pada dialog UI jQuery . Sepertinya saya tidak dapat menemukan ini di salah satu dokumentasi di tautan di atas.
Saya memiliki 2 tombol pada konfirmasi modal ("Konfirmasi" dan "Batalkan"). Dalam kasus tertentu, saya ingin menonaktifkan tombol "Konfirmasi".
.button()
plugin, jadi itu bukan solusi terbaik / terbersih lagi.Jawaban:
Jika Anda menyertakan
.button()
plugin / widget yang berisi jQuery UI (jika Anda memiliki perpustakaan lengkap dan 1,8+, Anda memilikinya), Anda dapat menggunakannya untuk menonaktifkan tombol dan memperbarui status secara visual, seperti ini:Anda dapat mencobanya di sini ... atau jika Anda menggunakan versi yang lebih lama atau tidak menggunakan widget tombol, Anda dapat menonaktifkannya seperti ini:
Jika Anda menginginkannya di dalam dialog tertentu, ucapkan dengan ID, lalu lakukan ini:
Dalam kasus lain di mana
:contains()
mungkin memberikan positif palsu maka Anda dapat menggunakan.filter()
seperti ini, tapi ini berlebihan karena Anda tahu dua tombol Anda. Jika itu terjadi dalam situasi lain, akan terlihat seperti ini:Ini akan mencegah
:contains()
dari mencocokkan substring dari sesuatu yang lain.sumber
$("#dialogID").nextAll(".ui-dialog-buttonpane").find("button:contains('Confirm')").attr("disabled", true).addClass("ui-state-disabled");
$(".ui-dialog-buttonpane button:contains('Confirm')").button("disable");
meskipun jika Anda ingin menonaktifkan tombol dari fungsi yang Anda miliki untuk itu, Anda harus widgetize dialog itu dan menonaktifkan tombol setelah itu; seperti ini$(this).dialog("widget").find(".ui-dialog-buttonpane button:contains('Confirm')").button("disable");
Sepertinya siapa pun, bahkan dalam pertanyaan terkait ini , telah mengusulkan solusi ini, mirip dengan bagian pertama dari jawaban yang diberikan oleh Nick Craver:
Kemudian, di tempat lain, Anda harus dapat menggunakan API untuk tombol UI jquery:
sumber
{text:"ok",disabled:true,click: function(){}}
$("#dialog").dialog("widget").find(".button-ok-class").button("enable")
Anda juga dapat menggunakan atribut yang
tidakdidokumentasikan sekarangdisabled
:Untuk mengaktifkan setelah dialog dibuka, gunakan:
JsFiddle: http://jsfiddle.net/xvt96e1p/4/
sumber
attr: { 'data-value' : 'some value here' }
jika Anda ingin menambahkan atributdata-value
ke tombol.disabled
atribut harus ditetapkan saat membuat tombol.Berikut ini berfungsi dari dalam fungsi klik tombol:
sumber
Sebuah tombol diidentifikasi oleh kelas
ui-button
. Untuk menonaktifkan tombol:Kecuali jika Anda secara dinamis membuat dialog (yang mungkin), Anda akan tahu posisi tombol. Jadi, untuk menonaktifkan tombol pertama:
The
ui-state-disabled
kelas adalah apa yang memberi sebuah tombol yang bagus gaya redup.sumber
Saya membuat fungsi jQuery untuk membuat tugas ini sedikit lebih mudah. Mungkin sekarang ada solusi yang lebih baik ... bagaimanapun juga, ini 2 sen saya. :)
Cukup tambahkan ini ke file JS Anda:
Nonaktifkan tombol 'Ok' pada dialog dengan kelas 'dialog':
Aktifkan semua tombol:
Aktifkan tombol 'Tutup' dan ubah warna:
Teks pada semua tombol berwarna merah:
Semoga ini membantu :)
sumber
sumber
Anda dapat menimpa susunan tombol dan hanya menyisakan yang Anda butuhkan.
sumber
kode ini nonaktifkan tombol dengan 'YOUR_BUTTON_LABEL'. Anda dapat mengganti nama di berisi (). untuk menonaktifkan
ganti 'YOUR_BUTTON_LABEL' dengan label tombol Anda. untuk mengaktifkan
sumber
Anda dapat melakukan ini untuk menonaktifkan tombol pertama misalnya:
sumber
Cara saya melakukannya adalah
Cancel: function(e) { $(e.target).attr( "disabled","disabled" ); }
Ini adalah cara terpendek dan termudah yang saya temukan.
sumber
Jika Anda menggunakan sistem gugur, maka ini lebih bersih. Bayangkan Anda memiliki yang berikut ini:
Keajaiban ini berasal dari sumber jQuery UI :
Anda pada dasarnya dapat memanggil fungsi instance APAPUN jQuery dengan melewatkannya melalui objek tombol.
Misalnya, jika Anda ingin menggunakan HTML:
Atau, jika Anda ingin menambahkan kelas ke tombol (Anda dapat melakukan ini beberapa cara):
Mungkin Anda gila, dan Anda ingin menghapus tombol dari dom ketika itu melayang:
Saya benar-benar terkejut bahwa tidak ada seorang pun yang menyebutkan hal ini dalam banyak utas seperti ini ...
sumber
Ini bekerja untuk saya -
sumber
Anda dapat menonaktifkan tombol saat membuat dialog:
Atau Anda dapat menonaktifkannya kapan saja setelah dialog dibuat:
sumber