Saya memiliki dialog jQuery yang mengharuskan pengguna memasukkan informasi tertentu. Dalam formulir ini, saya memiliki tombol "lanjutkan". Saya ingin tombol "terus" ini hanya diaktifkan setelah semua bidang isinya, jika tidak maka akan tetap dinonaktifkan.
Saya menulis fungsi yang disebut setiap kali status bidang telah berubah. Namun, saya tidak tahu cara mengaktifkan dan menonaktifkan tombol dialog dari fungsi ini. Apa yang harus saya lakukan?
Ups dan saya lupa menyebutkan bahwa tombol-tombol ini dibuat sebagai berikut:
$(function() {
$("#dialog").dialog({
bgiframe: true,
height: 'auto',
width: 700,
show: 'clip',
hide: 'clip',
modal: true,
buttons: {
'Add to request list': function() {
$(this).dialog('close');
$('form').submit();
},
'Cancel': function() {
$(this).dialog('close');
}
}
})
});
Jawaban:
Anda ingin mengatur properti yang dinonaktifkan
Update : Ahha, saya melihat kerumitannya sekarang. The jQuery Dialog memiliki garis tunggal yang akan digunakan (di bawah "tombol" bagian.
Anda harus mendapatkan koleksi tombol dari dialog, mengulanginya untuk menemukan yang mana yang Anda butuhkan, dan kemudian mengatur atribut yang dinonaktifkan seperti yang saya tunjukkan di atas.
sumber
.prop('disabled', true)
lebih disukai di jQuery 1.6+Ini sangat sederhana:
sumber
.prop('disabled', true)
lebih disukai di jQuery 1.6+Anda semua menyulitkan tugas sederhana; dialog jQueryUI memiliki dua cara untuk mengatur tombol karena suatu alasan.
Jika Anda hanya perlu mengatur handler klik untuk setiap tombol, gunakan opsi yang mengambil
Object
argumen. Untuk menonaktifkan tombol dan memberikan atribut lain, gunakan opsi yang mengambilArray
argumen.Contoh berikut akan menonaktifkan tombol, dan memperbarui statusnya dengan benar dengan menerapkan semua kelas dan atribut CSS jQueryUI.
Langkah 1 - Buat dialog Anda dengan
Array
tombol:Langkah 2 - Mengaktifkan / menonaktifkan tombol Selesai setelah dialog dibuat:
sumber
each
loop tidak perlu. Tentukanclass
atribut dalambuttons
array dan Anda dapat menggunakannya untuk menemukan elemen yang tepat.Jika Anda membuat dialog yang menyediakan id untuk tombol,
kita dapat menonaktifkan tombol dengan kode berikut:
sumber
Saya ingin dapat menemukan tombol dengan nama (karena saya memiliki beberapa tombol dalam dialog UI jQuery saya). Saya juga memiliki beberapa dialog pada halaman jadi saya perlu cara untuk mendapatkan tombol dari dialog tertentu. Inilah fungsi saya:
sumber
Ini menonaktifkan tombol:
Anda harus menambahkan id dialog jika Anda memiliki beberapa dialog pada halaman.
sumber
Inilah contoh dari pertanyaan yang dimodifikasi untuk menonaktifkan tombol setelah diklik:
Selain itu, pertanyaan berikut juga akan membantu dengan ini: Bagaimana saya bisa menonaktifkan tombol pada dialog jQuery UI?
sumber
Saya menemukan cara mudah untuk menonaktifkan (atau melakukan tindakan lain) pada tombol dialog.
Anda cukup memilih induk dari dialog Anda dan menemukan semua tombol. Kemudian memeriksa Teks tombol Anda, Anda dapat mengidentifikasi tombol Anda.
sumber
Saya mendapatkan ini berfungsi dengan metode
.dialog("widget")
yang mengembalikan DIV dialog itu sendiri. Jika Anda menggunakan metode dialog:sumber
Dari perspektif kegunaan, biasanya lebih baik membiarkan tombol diaktifkan tetapi menunjukkan pesan kesalahan jika seseorang mencoba mengirim formulir yang tidak lengkap. Ini membuat saya gila ketika tombol yang ingin saya klik dinonaktifkan dan tidak ada petunjuk mengapa.
sumber
Coba ini:
sumber
Ini adalah fungsi enableOk saya untuk dialog jQuery:
Tombol "pertama" adalah yang terjauh ke kanan. Anda berdua menonaktifkan tombol dan mengatur kelas dialog yang dinonaktifkan, untuk efek visual yang tepat.
sumber
Di legacy jQuery UI (versi 1.7.3) saya bisa menggunakan saja
untuk hanya menonaktifkan tombol pada elemen DOM itu sendiri. Sekarang kita telah meningkatkan ke jQuery UI yang lebih baru (versi 1.8.7) metode itu tidak lagi berfungsi di Firefox, tetapi saya cukup memanggil jquery UI tombol khusus untuk menonaktifkan dan mengaktifkan fungsi pada objek jquery tombol:
sumber
haha, baru saja menemukan metode yang menarik untuk mengakses bottons
Sepertinya Anda semua tidak tahu ada objek acara dalam argumen ...
omong-omong, itu hanya mengakses tombol dari dalam panggilan balik, dalam kasus umum, ada baiknya menambahkan id untuk akses
sumber
Jika Anda benar-benar ingin menonaktifkan tombol, saya menemukan bahwa Anda juga perlu memanggil metode .unbind () di atasnya. Kalau tidak, tombolnya mungkin masih aktif, dan klik dua kali dapat menyebabkan banyak pengiriman formulir. Kode berikut ini berfungsi untuk saya:
sumber
Saya menemukan solusi yang dapat diterapkan pada orang yang mencoba melakukan hal serupa. Alih-alih menonaktifkan tombol, saya menempatkan
if
pernyataan sederhana di fungsi untuk memeriksa apakah kotak centang dicentang.Jika tidak, itu akan menampilkan pesan sederhana yang mengatakan kotak itu harus diperiksa sebelum dikirim.
Sebagai contoh:
Bagaimanapun, saya harap itu membantu seseorang.
sumber
Saya membuat fungsi jQuery untuk membuat tugas ini sedikit lebih mudah. Cukup tambahkan ini ke file JavaScript Anda:
Nonaktifkan tombol 'OK' pada dialog dengan kelas 'dialog':
Aktifkan semua tombol:
Aktifkan tombol 'Tutup' dan ubah warna:
Saya harap ini membantu.
sumber
Sayangnya tidak ada solusi dari yang diberikan di sini yang berfungsi untuk beberapa dialog pada halaman.
Juga masalahnya adalah bahwa dialog asli tidak berisi panel tombol itu sendiri, tetapi merupakan saudara kandung dari itu.
Jadi saya datang dengan memilih dengan ID dialog seperti itu:
...
...
dan kemudian fungsi getFirstDialogButton () yang sama dapat digunakan kemudian untuk mengaktifkan tombol, misalnya setelah validasi berhasil.
Semoga bisa membantu seseorang.
sumber
Berikut ini adalah contoh yang baru saja saya terapkan menggunakan metode Array untuk menetapkan tombol, yang kemudian memungkinkan saya untuk menggunakan id selektor nanti - sama seperti jawaban yang diterima pada awalnya - untuk mengaktifkan / menonaktifkan tombol dan bahkan menampilkan / menyembunyikannya sepenuhnya seperti saya perbuatan.
Setelah berhasil mengirim, saya menonaktifkan dan menyembunyikan dua tombol dan mengaktifkan tombol OK yang dinonaktifkan secara default.
Semoga ini membantu.
sumber
Saya membuat fungsi yang mirip dengan apa yang dilakukan Nick, tetapi metode saya tidak memerlukan pengaturan dialogClass dan Anda akan bisa mendapatkan tombol dari dialog tertentu melalui id (jika lebih dari satu ada di aplikasi Anda)
Jadi jika Anda membuat dialog seperti itu:
Anda bisa mendapatkan tombol dengan melakukan hal berikut:
Untuk menonaktifkan:
Untuk mengaktifkan:
sumber
Sebagai catatan, postingan ini membantu saya untuk menyelesaikan masalah saya. Singkatnya, Anda harus mengatur atribut yang dinonaktifkan menjadi dinonaktifkan, bukan ke false:
Ini adalah bagaimana semua kode terlihat, saya juga menambahkan beberapa gaya agar terlihat dinonaktifkan:
sumber
Saya pikir itu harus bekerja dengan semua,
sumber
Untuk Menonaktifkan tombol Simpan di kotak Dialog saya gunakan baris berikut di fungsi Anda.
Untuk mengubah teks dalam tombol, gunakan baris berikut (ini mengubah teks tombol batal menjadi Tutup Saya)
sumber
@ Chris Anda dapat menggunakan baris kode berikut untuk mengaktifkan / menonaktifkan tombol dialog hingga kotak centang Anda dicentang / tidak dicentang
Sumber asli: http://jsfiddle.net/nick_craver/rxZPv/1/
sumber
Memanggil
.attr("disabled", true)
tentu saja berfungsi, tetapi menggunakan jQuery Anda ingin melakukannya dengan cara yang lebih 'gula', jadi saya telah menulis ekstensi sederhana:Sekarang Anda memiliki fungsi
enable()
dandisable()
, sehingga Anda dapat melakukan pekerjaan Anda seperti itu:Yang sama dengan
dan
sumber
Ini berhasil bagi saya:
sumber
Di dunia jQuery, jika Anda ingin memilih objek dari sekumpulan elemen DOM, Anda harus menggunakan eq () .
Contoh:
atau
sumber
Menurut dokumentasi :
https://api.jqueryui.com/dialog/#option-buttons
Untuk dapat dengan mudah memilih tombol, Anda dapat menambahkan kelas CSS sendiri ke tombol, yang harus diaktifkan / dinonaktifkan.
Maka mengaktifkan / menonaktifkan akan terlihat seperti ini:
sumber
Jika ada yang ingin mengganti tombol dengan sesuatu seperti animasi pemuatan ketika diklik (misalnya ketika tombol "Kirim" mengirimkan formulir dalam dialog) - Anda dapat mengganti tombol dengan gambar Anda seperti ini:
jQuery gantiDengan dokumen
sumber
Untuk menonaktifkan satu tombol, pada dialog buka:
sumber