Saya mencoba menggunakan Dialog JQuery UI untuk mengganti javascript:alert()
kotak yang jelek . Dalam skenario saya, saya memiliki daftar item, dan di sebelah masing-masing individu, saya akan memiliki tombol "hapus" untuk masing-masing. pengaturan html psuedo akan menjadi sesuatu sebagai berikut:
<ul>
<li>ITEM <a href="url/to/remove"> <span>$itemId</span>
<li>ITEM <a href="url/to/remove"><span>$itemId</span>
<li>ITEM <a href="url/to/remove"><span>$itemId</span>
</ul>
<div id="confirmDialog">Are you sure?</div>
Di bagian JQ, pada dokumen siap, saya pertama-tama akan mengatur div menjadi dialog modal dengan tombol yang diperlukan, dan mengatur "a" untuk menjadi konfirmasi sebelum menghapus, seperti:
$("ul li a").click(function() {
// Show the dialog
return false; // to prevent the browser actually following the links!
}
Oke, ini masalahnya. selama waktu init, dialog tidak akan tahu siapa (item) akan menjalankannya, dan juga id item (!). Bagaimana saya bisa mengatur perilaku tombol konfirmasi itu untuk, jika pengguna masih memilih YA, itu akan mengikuti tautan untuk menghapusnya?
sumber
Jawaban:
Saya hanya harus menyelesaikan masalah yang sama. Kunci untuk membuatnya berfungsi adalah bahwa
dialog
sebagian harus diinisialisasi dalamclick
event handler untuk tautan yang Anda ingin gunakan fungsionalitas konfirmasi dengan (jika Anda ingin menggunakan ini untuk lebih dari satu tautan). Ini karena URL target untuk tautan harus dimasukkan ke dalam event handler untuk klik tombol konfirmasi. Saya menggunakan kelas CSS untuk menunjukkan tautan mana yang harus memiliki perilaku konfirmasi.Inilah solusi saya, disarikan untuk menjadi contoh.
Saya percaya ini akan bekerja untuk Anda, jika Anda dapat menghasilkan tautan Anda dengan kelas CSS (
confirmLink
, dalam contoh saya).Berikut adalah jsfiddle dengan kode di dalamnya.
Untuk kepentingan pengungkapan penuh, saya akan mencatat bahwa saya menghabiskan beberapa menit untuk masalah khusus ini dan saya memberikan jawaban yang serupa untuk pertanyaan ini , yang juga tanpa jawaban yang diterima pada saat itu.
sumber
Saya menemukan jawaban oleh Paul tidak cukup bekerja karena cara dia mengatur opsi SETELAH dialog instantiated pada acara klik tidak benar. Ini kode saya yang berfungsi. Saya belum membuatnya sesuai dengan contoh Paul, tetapi hanya perbedaan kumis kucing dalam hal beberapa elemen diberi nama berbeda. Anda harus bisa menyelesaikannya. Koreksi ada di setter dari opsi dialog untuk tombol pada event klik.
Semoga ini bisa membantu orang lain karena postingan ini semula membuat saya berada di jalur yang benar. Saya pikir saya sebaiknya memposting koreksi.
sumber
on
alih-alihclick
, karena ini akan terus bekerja jika (misalnya) bidang digambar ulang menggunakan jQuery - api.jquery.com/onSaya telah membuat fungsi saya sendiri untuk dialog konfirmasi jquery ui. Ini kodenya
Sekarang untuk menggunakan ini dalam kode Anda, cukup tulis berikut ini
Lanjutkan.
sumber
Solusi sederhana dan pendek yang baru saja saya coba dan berhasil
kemudian tambahkan saja class = "confirm" ke tautan Anda dan itu berfungsi!
sumber
Ini solusi saya .. saya harap ini membantu siapa pun. Itu ditulis dengan cepat bukannya copypasted jadi maafkan saya atas kesalahan.
Secara pribadi saya lebih suka solusi ini :)
sunting: Maaf .. saya benar-benar harus menjelaskannya lebih detail. Saya menyukainya karena menurut saya ini solusi yang elegan. Ketika pengguna mengklik tombol yang perlu dikonfirmasi terlebih dahulu, acara dibatalkan sebagaimana mestinya. Ketika tombol konfirmasi diklik solusinya bukan untuk mensimulasikan klik tautan tetapi untuk memicu acara jquery asli yang sama (klik) pada tombol asli yang akan dipicu jika tidak ada dialog konfirmasi. Satu-satunya perbedaan adalah namespace acara yang berbeda (dalam hal ini 'dikonfirmasi') sehingga dialog konfirmasi tidak ditampilkan lagi. Mekanisme asli Jquery kemudian dapat mengambil alih dan hal-hal dapat berjalan seperti yang diharapkan. Keuntungan lain adalah dapat digunakan untuk tombol dan hyperlink. Saya harap saya cukup jelas.
sumber
$("#btn").trigger("click.confirmed");
Saya tahu ini adalah pertanyaan lama tapi ini solusi saya menggunakan atribut data HTML5 di MVC4:
Kode JS:
sumber
Akankah ini berhasil?
sumber
Seperti di atas. Posting sebelumnya membuat saya di jalur yang benar. Beginilah cara saya melakukannya. Idenya adalah memiliki gambar di sebelah setiap baris dalam tabel (dihasilkan oleh skrip PHP dari database). Ketika sebuah gambar diklik, pengguna akan diarahkan ke URL, dan sebagai hasilnya, catatan yang sesuai akan dihapus dari database sambil menunjukkan beberapa data terkait dengan catatan yang diklik dalam jQuery UI Dialog.
Kode JavaScript:
Dialog div:
Tautan gambar:
Dengan cara ini Anda bisa melewatkan nilai loop PHP ke dalam kotak dialog. Satu-satunya downside menggunakan metode GET untuk benar-benar melakukan tindakan.
sumber
Bagaimana dengan ini:
Saya sudah mengujinya di html ini:
Ini menghapus elemen li keseluruhan, Anda dapat menyesuaikannya dengan kebutuhan Anda.
sumber
(Pada 03/22/2016, unduhan pada halaman yang ditautkan tidak berfungsi. Saya meninggalkan tautan di sini jika pengembang memperbaikinya di beberapa titik karena ini adalah plugin kecil yang hebat. Posting aslinya mengikuti. alternatif, dan tautan yang benar-benar berfungsi: jquery.confirm .)
Ini mungkin terlalu sederhana untuk kebutuhan Anda, tetapi Anda dapat mencoba plugin konfirmasi jQuery ini . Sangat mudah digunakan dan melakukan pekerjaan dalam banyak kasus.
sumber
Meskipun saya benci menggunakan eval, sepertinya cara termudah bagi saya, tanpa menyebabkan banyak masalah tergantung pada keadaan yang berbeda. Mirip dengan fungsi settimeout javascript.
sumber
Saya mengalami ini sendiri dan berakhir dengan solusi, yang mirip dengan beberapa jawaban di sini, tetapi diimplementasikan sedikit berbeda. Saya tidak suka banyak potongan javascript, atau tempat penampung di suatu tempat. Saya ingin solusi umum, yang kemudian dapat digunakan dalam HTML tanpa menambahkan javascript untuk setiap penggunaan. Inilah yang saya buat (ini membutuhkan jquery ui):
Javascript:
Dan kemudian dalam HTML, tidak ada panggilan javascript atau referensi yang diperlukan:
Karena atribut judul digunakan untuk konten div, pengguna bahkan bisa mendapatkan pertanyaan konfirmasi dengan mengarahkan kursor ke tombol (itulah sebabnya saya tidak menggunakan atribut judul untuk ubin). Judul jendela konfirmasi adalah konten dari tag alt. Snip javascript dapat dimasukkan dalam .js umum termasuk, dan hanya dengan menerapkan kelas Anda memiliki jendela konfirmasi cantik.
sumber
sumber
CATATAN: Tidak cukup perwakilan untuk berkomentar tetapi jawaban BineG bekerja dengan sempurna dalam menyelesaikan masalah postback dengan halaman ASPX seperti yang disorot oleh Homer dan echo. Untuk menghormati, inilah variasi menggunakan dialog dinamis.
sumber
Variasi lain di atas di mana ia memeriksa apakah kontrol adalah 'asp: linkbutton' atau 'asp: tombol' yang dirender sebagai dua kontrol html yang berbeda. Tampaknya bekerja dengan baik untuk saya tetapi belum mengujinya secara ekstensif.
sumber
Saya sedang mencari ini untuk digunakan pada tombol-link dalam ASP.NET Gridview (Kontrol GridView dalam Perintah). Jadi tindakan "Konfirmasi" dalam dialog perlu mengaktifkan skrip yang dihasilkan oleh kontrol Gridview saat run-time. ini bekerja untuk saya:
sumber
var inlineFunction = $(this).attr("href") + ";"; /* ... */ eval(inlineFunction);
Ini sama sekali tidak masuk akal!Saya tahu pertanyaan ini sudah lama tetapi ini adalah pertama kalinya saya harus menggunakan dialog konfirmasi. Saya pikir ini adalah cara terpendek untuk melakukannya.
Saya harap Anda menyukainya :)
sumber
Secara pribadi saya melihat ini sebagai persyaratan berulang dalam banyak tampilan dari banyak aplikasi ASP.Net MVC.
Itu sebabnya saya mendefinisikan kelas model dan tampilan sebagian:
Dan sebagian pandangan saya:
Dan kemudian, setiap kali Anda membutuhkannya dalam tampilan, Anda hanya menggunakan @ Html.Partial (dalam melakukannya di skrip bagian sehingga JQuery didefinisikan):
Caranya adalah dengan menentukan JQueryClickSelector yang akan cocok dengan elemen yang membutuhkan dialog konfirmasi. Dalam kasus saya, semua jangkar dengan kelas SyLinkDelete tetapi itu bisa berupa pengidentifikasi, kelas yang berbeda dll. Bagi saya itu adalah daftar:
sumber
Topik yang sangat populer dan google menemukan ini untuk permintaan "dialog jquery tutup acara mana yang diklik". Solusi saya menangani acara YA, TIDAK, ESC_KEY, X dengan benar. Saya ingin fungsi panggilan balik saya dipanggil tidak peduli bagaimana dialog dibuang.
Sangat mudah untuk mengarahkan ulang browser ke url baru atau melakukan sesuatu yang lain pada fungsi retval.
sumber
Begitu banyak jawaban bagus di sini;) Ini pendekatan saya. Serupa dengan penggunaan eval ().
Dan penggunaannya terlihat seperti:
sumber
Di luar kotak JQuery UI menawarkan solusi ini:
HTML
Anda selanjutnya dapat menyesuaikan ini dengan memberikan nama untuk fungsi JQuery dan melewati teks / judul yang ingin ditampilkan sebagai parameter.
Referensi: https://jqueryui.com/dialog/#modal-confirmation
sumber
Nah ini jawaban dari pertanyaan Anda ...
pastikan Anda memiliki jquery 1.4.4 dan jquery.ui
sumber
LANGUAGE="JavaScript"
), menggunakan karakter huruf besar dan kecil dicampur, Anda mencampur kode JS sederhana dengan kode jQuery yang sama sekali tidak perlu, dan Anda menetapkan gaya dengan JS alih-alih CSS (jelek dan tidak benar secara semantik), dan, omong-omong, gaya Anda modifikasi (dengan JS sederhana) sama sekali tidak relevan mengenai pertanyaan awal. Anda harus memperpendek dan memperindah kode Anda dan fokus menjawab pertanyaan awal.Cara mudah dengan sentuhan javascript
sumber