Saya sedang mengerjakan situs web menggunakan bootstrap.
Pada dasarnya, saya ingin menggunakan modal di halaman rumah, dipanggil oleh tombol di Unit Pahlawan.
Kode tombol:
<button type="button"
class="btn btn-warning btn-large"
data-toggle="modal"
data-target="#myModal">Open Modal</button>
Kode modal:
<div class="modal hide fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h3 id="myModalLabel">In Costruzione</h3>
</div>
<div class="modal-body">
<p>Test Modal: Bootstrap</p>
</div>
<div class="modal-footer">
<button class="btn" data-dismiss="modal" aria-hidden="true">Chiudi</button>
<button class="btn btn-warning">Salva</button>
</div>
</div>
Masalahnya adalah begitu saya mengklik tombol, modal menghilang dan kemudian segera menghilang.
Saya menghargai bantuan apa pun.
Juga, bagaimana cara mengubah warna segitiga dropdown (menunjuk ke atas, tidak membawa)? Saya sedang mengerjakan sebuah situs web yang didasarkan pada warna oranye dan coklat dan hal biru itu sangat menjengkelkan.
twitter-bootstrap
modal-dialog
gorokizu
sumber
sumber
Jawaban:
Penyebab yang Mungkin
Ini adalah perilaku umum ketika JavaScript untuk plugin Modal dimuat dua kali. Silakan periksa untuk memastikan bahwa plugin tidak bertambah dua kali lipat. Tergantung pada platform yang Anda gunakan, kode modal dapat diambil dari sumber nomor. Beberapa yang umum adalah:
require('bootstrap')
Tips Debugging
Tempat yang baik untuk memulai adalah memeriksa
click
pendengar acara terdaftar menggunakan alat pengembang di browser Anda. Chrome, misalnya, akan mencantumkan file sumber JS tempat kode untuk mendaftarkan pendengar dapat ditemukan. Pilihan lain adalah mencoba mencari sumber pada halaman untuk frasa yang ditemukan dalam kode Modal, misalnyavar Modal
,.Sayangnya, ini tidak selalu menemukan hal-hal dalam semua kasus. Memeriksa permintaan jaringan bisa menjadi sedikit lebih kuat untuk memberi Anda gambaran tentang segala sesuatu yang dimuat pada halaman.
Demo (Rusak)
Berikut ini demo tentang apa yang terjadi ketika Anda memuat bootstrap.js dan bootstrap-modal.js (hanya untuk mengonfirmasi pengalaman Anda):
Plunker
Jika Anda gulir ke bawah ke bagian bawah sumber pada halaman itu, Anda dapat menghapus atau mengomentari
<script>
baris untuk bootstrap-modal.js dan kemudian memverifikasi bahwa sekarang modal akan berfungsi seperti yang diharapkan.sumber
Saya memiliki masalah yang sama tetapi memiliki penyebab yang berbeda. Saya mengikuti dokumentasi dan membuat tombol seperti:
Ketika saya mengkliknya, tampaknya tidak ada yang terjadi. Namun, tombol itu berada di
<form>
yang sementara hanya mengambil halaman yang sama.Saya memperbaiki ini dengan menambahkan
type="button"
ke elemen tombol, sehingga tidak akan mengirimkan formulir ketika diklik.sumber
Bagi saya yang berhasil adalah menghapus
dari tombol. Tombol itu sendiri dapat berupa elemen apa saja - tautan, div, tombol dll.
sumber
Saya mencari beberapa saat untuk referensi duplikat bootstrap di aplikasi MVC saya, setelah jawaban yang bermanfaat lainnya pada pertanyaan ini.
Akhirnya menemukannya - itu termasuk dalam perpustakaan lain yang saya gunakan, jadi tidak jelas sama sekali! (
datatables.net
).Jika Anda masih mendapatkan masalah ini, cari perpustakaan lain yang mungkin menyertakan bootstrap untuk Anda. (
datatables.net
memungkinkan Anda menentukan unduhan dengan atau tanpa bootstrap - orang lain melakukan hal yang sama).Jadi saya menghapus
bootstrap.min.js
dari sayabundle.config
dan semuanya bekerja dengan baik.sumber
Gejala yang sama, dalam konteks aplikasi Rails dengan Bootstrap yang disediakan oleh
bootstrap-sass
permata, dan jawaban @ merv menempatkan saya di jalur yang benar.application.js
File saya memiliki yang berikut:Cara mengatasinya adalah menghapus salah satu dari dua baris. Memang, readme permata memperingatkan Anda tentang kesalahan ini. Salahku.
sumber
Kode saya entah bagaimana menyertakan bootstrap.min.js dua kali. Saya menghapus salah satunya dan semuanya berfungsi dengan baik sekarang.
sumber
e.preventDefault();
dengan jquery uiBagi saya masalah ini terjadi dengan metode klik menimpa pada tombol jquery ui, menyebabkan halaman dimuat ulang secara default.
sumber
Masalahnya juga dapat terjadi jika menggunakan jquery Anda melampirkan pendengar acara dua kali. Sebagai contoh, Anda akan mengatur tanpa mengikat:
Jika ini terjadi, acara dipecat dua kali berturut-turut dan modal menghilang.
Lihat contoh: http://embed.plnkr.co/i5xB1WbX7zgXrbDMhNAW/preview
sumber
Saya mengalami gejala yang sama dengan yang ditunjukkan @gpasse dalam contohnya. Ini kode saya ...
Seperti yang disarankan oleh @Bhargav, masalah saya disebabkan oleh tombol yang mencoba mengirim formulir, dan memuat ulang laman. Saya mengubah tombol ke
<a>
tautan sebagai berikut:... dan itu memperbaiki masalah.
CATATAN: Saya belum memiliki reputasi yang cukup untuk hanya menambahkan komentar atau upvote, dan saya merasa bahwa saya dapat menambahkan sedikit klarifikasi.
sumber
Saya juga memiliki masalah yang sama, tetapi bagi saya itu terjadi karena saya memiliki tombol dengan tipe "kirim" dalam bentuk modal. aku berubah
untuk
Dan itu memperbaiki masalah penghilangan.
sumber
Dalam kasus saya, saya hanya memiliki satu bootstrap.js, file jquery.js dimasukkan tetapi masih mendapatkan jenis kesalahan seperti itu, dan kode saya untuk tombol adalah sesuatu seperti ini:
Saya sederhana menambahkan e.preventDefault (); untuk itu dan itu bekerja seperti pesona.
Jadi, kode baru saya seperti di bawah ini:
sumber
Saya menemukan masalah ini sendiri hari ini dan kebetulan hanya di Chrome. Apa yang membuat saya sadar itu mungkin masalah rendering. Memindahkan modal spesifik ke lapisan renderingnya sendiri telah menyelesaikannya.
sumber
Dalam kasus saya, klik pada tombol menyebabkan (tidak diinginkan) memuat kembali halaman.
Ini perbaiki saya:
sumber
Dalam kasus saya, saya telah menggunakan
actionlink
tombol di MVC dan saya menghadapi masalah ini, saya telah mencoba banyak solusi di atas dan lainnya, tetapi masih menghadapi masalah itu, maka saya menyadari kesalahan saya dalam kode.Saya telah memanggil modal dalam javascript dengan menggunakan
Sebelum kesalahan saya menggunakan tombol ini
Saya tidak memiliki nilai untuk properti href di tombol ini jadi saya menghadapi masalah ini.
Lalu saya edit kode tombol ini seperti ini
maka masalah diselesaikan hanya kesalahan karena tidak ada # di yang pertama.
lihat apakah ini akan membantu Anda.
sumber
Penyebab lain / solusi! Saya punya dalam kode JS saya:
Tetapi kode HTML saya sudah ditulis sebagai:
Jadi ini adalah permutasi lain tentang bagaimana duplikasi memasukkan kode dan menyebabkan modal terbuka kemudian tutup. Dalam kasus saya,
data-target
dandata-toggle
dalam html sesuai Bootstrap docs sudah memicu modal untuk bekerja. Karenanya, kode JS adalah mubazir, dan ketika dihapus, ia berfungsi.sumber
Saya memiliki masalah yang sama dengan mengerjakan proyek dengan asp.NET. Saya menggunakan bootstrap 3.1.0 menyelesaikannya downgrade ke Bootstrap 2.3.2.
sumber
Saya juga punya masalah, jika tombol di dalam a tandai maka modal muncul sekali dan segera menghilang, mengeluarkan tombol dari formulir memperbaiki isue. Terima kasih, saya berakhir di utas ini! +1 untuk semua.
sumber
Saya menghadapi masalah yang sama selama pengujian pada perangkat seluler dan trik ini berhasil untuk saya
Ubah tombol menjadi anchor tag yang seharusnya berfungsi, masalah terjadi karena tombol ketiknya saat mencoba mengirim sehingga modal menghilang segera
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
.sumber
type="submit"
untuktype="button"
menyelesaikan masalah ini.Dalam kasus saya, saya memiliki CDN yang termasuk dalam kepala application.html.erb dan juga menginstal permata 'jquery-rails', yang saya tebak berkat dokumentasi dan posting di atas, adalah mubazir.
Saya hanya berkomentar CDN (di bawah) dari kepala application.html.erb dan modal tetap terbuka.
sumber
Saya memiliki masalah yang sama juga. Masalahnya dengan saya adalah saya menampilkan modal pada menekan tautan dan meminta konfirmasi dengan jquery.
Kode di bawah ini menampilkan modal dan yang menghilang segera:
Saya akhirnya menambahkan '#' ke href sehingga tautannya tidak ke mana-mana dan itu memecahkan masalah saya.
sumber
Sudahkah Anda mencoba menghapus
sumber
Saya tahu ini sudah tua, tetapi ada satu hal lagi yang perlu diperiksa - pastikan Anda hanya memiliki satu atribut data-target =. Saya telah menggandakannya dan hasilnya sesuai dengan utas ini.
sumber
Saya telah menambahkan
bootstrap
ke proyek saya melaluibower
, kemudian saya mengimporbootstrap.min.js
file dan setelahmodal.js
file. (Tombol yang membuka modal ada di dalam formulir). Saya hanya menghapus impor untukmodal.js
dan itu berfungsi untuk saya.sumber
kalau-kalau ada yang menggunakan codeigniter 3 bootstrap dengan datatable.
di bawah ini adalah perbaikan saya di config / ci_boostrap.php
sumber
Harus menghadapi masalah yang sama. Alasannya sama dengan
@merv
. Masalahnya adalah dengan komponen kalender ditambahkan ke halaman. Komponen itu sendiri menambahkan fitur modal untuk digunakan dalam popup kalender.Jadi alasan untuk memecah popup model adalah satu atau lebih hal berikut
sumber
saat bekerja dengan Angular (5), saya menghadapi masalah yang sama, tetapi dalam kasus saya, saya menyelesaikannya sebagai berikut:
component.html
komponen.ts
CATATAN: perlu mengimpor jquery dalam file ts sebagai "menyatakan var $: any;"
Perubahan yang saya lakukan:
menghapus "data-toggle =" modal "dari tag Button (terima kasih kepada @miCRoSCoPiC_eaRthLinG jawaban ini membantu saya di sini) dalam kasus saya ini menunjukkan modal sehingga saya membuat (klik) =" showresult () "
di dalam component.ts perlu mendeklarasikan Jquery ($) dan metode klik tombol di dalam showresult () panggilan "$ ('# myModal'). modal ('show');"
sumber
Saya memiliki masalah yang sama karena saya beralih modal saya dua kali seperti yang ditunjukkan di bawah ini:
Saya menghapus satu kejadian:
dan itu bekerja seperti sulap!
sumber