Saya memiliki Dialog jQuery UI yang bekerja dengan baik di halaman ASP.NET saya:
jQuery(function() {
jQuery("#dialog").dialog({
draggable: true,
resizable: true,
show: 'Transfer',
hide: 'Transfer',
width: 320,
autoOpen: false,
minHeight: 10,
minwidth: 10
});
});
jQuery(document).ready(function() {
jQuery("#button_id").click(function(e) {
jQuery('#dialog').dialog('option', 'position', [e.pageX + 10, e.pageY + 10]);
jQuery('#dialog').dialog('open');
});
});
Div saya:
<div id="dialog" style="text-align: left;display: none;">
<asp:Button ID="btnButton" runat="server" Text="Button" onclick="btnButton_Click" />
</div>
Tetapi btnButton_Click tidak pernah dipanggil ... Bagaimana saya bisa menyelesaikannya?
Informasi lebih lanjut: Saya menambahkan kode ini untuk memindahkan div ke formulir:
jQuery("#dialog").parent().appendTo(jQuery("form:first"));
Tetapi masih belum berhasil ...
Jawaban:
Anda dekat dengan solusinya, hanya mendapatkan objek yang salah. Seharusnya seperti ini:
sumber
Menggunakan kode ini memecahkan masalah saya dan berhasil di setiap browser, Internet Explorer 7, Firefox 3, dan Google Chrome. Saya mulai menyukai jQuery ... Ini kerangka yang keren.
Saya telah menguji dengan render parsial juga, persis apa yang saya cari. Bagus!
sumber
FWIW, bentuk: teknik pertama tidak berhasil untuk saya.
Namun, teknik dalam artikel blog itu:
http://blog.roonga.com.au/2009/07/using-jquery-ui-dialog-with-aspnet-and.html
Secara khusus, menambahkan ini ke deklarasi dialog:
sumber
Perlu diketahui bahwa ada pengaturan tambahan di jQuery UI v1.10. Ada pengaturan appendTo yang telah ditambahkan, untuk mengatasi solusi ASP.NET yang Anda gunakan untuk menambahkan kembali elemen ke formulir.
Mencoba:
sumber
Jawaban ken di atas membantu saya. Masalah dengan jawaban yang diterima adalah bahwa itu hanya berfungsi jika Anda memiliki modal tunggal pada halaman. Jika Anda memiliki banyak modals, Anda harus melakukannya sebaris di param "terbuka" sambil menginisialisasi dialog, bukan setelah faktanya.
Jika Anda melakukan apa yang jawaban pertama yang diterima memberi tahu Anda dengan banyak modals, Anda hanya akan mendapatkan modal terakhir pada halaman yang menjalankan postback dengan benar, tidak semuanya.
sumber
Terutama itu karena jQuery memindahkan dialog di luar tag formulir menggunakan DOM . Pindahkan kembali ke dalam tag formulir dan itu akan berfungsi dengan baik. Anda dapat melihat ini dengan memeriksa elemen di Firefox.
sumber
Saya tidak ingin harus mengatasi masalah ini untuk setiap dialog di proyek saya, jadi saya membuat plugin jQuery sederhana. Plugin ini hanya untuk membuka dialog baru dan menempatkannya dalam formulir ASP.NET :
Jadi untuk menggunakan plugin, Anda pertama-tama memuat jQuery UI dan kemudian plugin. Maka Anda dapat melakukan sesuatu seperti berikut:
Agar jelas, plugin ini mengasumsikan Anda siap untuk menampilkan dialog saat Anda menyebutnya.
sumber
Saya tahu ini adalah pertanyaan lama, tetapi bagi siapa pun yang memiliki masalah yang sama ada solusi yang lebih baru dan lebih sederhana: opsi "appendTo" telah diperkenalkan di jQuery UI 1.10.0
http://api.jqueryui.com/dialog/#option-appendTo
sumber
Fantastis! Ini memecahkan masalah saya dengan ASP: Acara tombol tidak menyala di dalam modal jQuery. Harap dicatat, menggunakan modal UI jQuery dengan yang berikut ini memungkinkan acara tombol diaktifkan:
Baris berikut adalah kunci untuk membuatnya bekerja!
sumber
Saya baru saja menambahkan baris berikut setelah Anda membuat dialog:
sumber
Ini solusi paling jelas untuk saya
Semua konten di dalam
dlg2
akan tersedia untuk dimasukkan ke dalam basis data Anda. Jangan lupa untuk mengubahdialog
variabel agar sesuai dengan variabel Anda.sumber
Dengan ASP.NET gunakan saja
UseSubmitBehavior="false"
tombol ASP.NET Anda:Referensi: Button.UseSubmitBehavior Property
sumber
Solusi dari Robert MacLean dengan jumlah suara tertinggi adalah 99% benar. Tetapi satu-satunya tambahan yang mungkin diperlukan seseorang, seperti yang saya lakukan, adalah kapan pun Anda perlu membuka dialog jQuery ini, jangan lupa menambahkannya ke orang tua. Seperti di bawah ini:
var dlg = $('#questionPopup').dialog( 'open'); dlg.parent().appendTo($("form:first"));
sumber
Gunakan baris ini untuk membuat ini berfungsi saat menggunakan modal: opsi benar.
sumber
The
$('#dialog').parent().appendTo($("form:first"))
solusi bekerja dengan baik di IE 9. Tapi di IE 8 itu membuat dialog muncul dan menghilang secara langsung. Anda tidak dapat melihat ini kecuali jika Anda menempatkan beberapa peringatan sehingga tampaknya dialog tidak pernah muncul. Saya menghabiskan satu pagi menemukan solusi yang berfungsi pada kedua versi dan satu-satunya solusi yang bekerja pada kedua versi 8 dan 9 adalah:Semoga ini bisa membantu orang lain yang bergulat dengan masalah yang sama
sumber
UseSubmitBehavior
properti Button kefalse
nilai. Dengan cara ini Anda tidak perluappend
atauprepend
panggilan.Gerakkan dialog dengan cara yang benar, tetapi Anda harus melakukannya hanya di tombol membuka dialog. Berikut adalah beberapa kode tambahan dalam sampel jQuery UI:
Tambahkan
asp:button
bagian dalam dialog Anda, dan itu berjalan dengan baik.Catatan: Anda harus mengubah <button> menjadi <input type = button> untuk mencegah postback setelah Anda mengklik tombol "buat pengguna".
sumber
Solusi yang tepat adalah;
sumber