Hindari penghentian modal saat tombol masuk

107

Saya telah menyiapkan modal bootstrap dengan formulir di dalamnya, saya baru saja memperhatikan bahwa ketika saya menekan tombol Enter, modal tersebut akan diberhentikan. Apakah ada cara untuk tidak menutupnya saat menekan Enter?

Saya mencoba mengaktifkan modal dengan keyboard: false, tetapi itu hanya mencegah pemecatan dengan tombol ESC.

Luke Morgan
sumber
Saya suka pertanyaan ini. Mengapa tidak mengedit kode sumber plugin saja?
Ryan
Saya akan memeriksanya, jika saya menemukan sesuatu yang berguna, saya akan mengeditnya. Sementara itu, saya harap ada yang tahu jawabannya.
Luke Morgan
Saya mengubah dari click.dismiss.modal ke keyup, tampaknya baik-baik saja, saya akan memeriksa lagi nanti untuk melihat apakah saya mengacaukan sesuatu yang lain
Luke Morgan
Ya, itu mengacaukan tombol (saya menambahkan onclick = "$ ('# signinModal'). Modal ('hide');" untuk menghindari masalah tersebut, sekarang semuanya baik-baik saja, tampaknya)
Luke Morgan

Jawaban:

122

Saya baru saja mengalami masalah ini juga.
Masalah saya adalah saya memiliki tombol tutup di modal saya

<button class="close" data-dismiss="modal">&times;</button>

Menekan enter di kolom input menyebabkan tombol ini diaktifkan. Saya mengubahnya menjadi jangkar sebagai gantinya dan berfungsi seperti yang diharapkan sekarang (masukkan mengirimkan formulir dan tidak menutup modal).

<a class="close" data-dismiss="modal">&times;</a>

Tanpa melihat sumber Anda, saya tidak dapat memastikan bahwa tujuan Anda sama.

vish
sumber
Tidak, tidak ada tombol yang digunakan, saya menggunakan <a> item, saya kira itu sesuatu yang lain. Kode yang saya gunakan pada dasarnya adalah kode sampel di halaman bootstrap, hanya dengan formulir yang ditambahkan di dalamnya
Luke Morgan
Saya tidak melihat tombol di pojok kanan atas, itu masalahnya. Sekarang berfungsi dengan baik, terima kasih!
Luke Morgan
+1, Temuan luar biasa! Saya ingin tahu apakah ada yang meletakkan ini di pelacak masalah bootstrap? Saya terlalu malas untuk memeriksa saat ini. Mungkin setelah makan siang.
Andrew
8
Ini bukan hanya masalah tombol. Saya telah menghapus semua tombol dari modal saya (termasuk kanan atas "x"), tetapi jika saya memiliki satu bidang teks formulir, menekan Enter akan menutup dialog. Anehnya itu hanya menjadi masalah ketika ada satu bidang teks. Setelah saya memiliki dua, Enter tidak mengabaikan model, apa pun bidang yang memiliki fokus.
jpeskin
11
seseorang dapat menggunakan type = "button" pada tombol batal
Muayyad Alsadi
19

Saya mengalami masalah ini bahkan setelah menghapus SEMUA tombol dari Modal Bootstrap saya, jadi tidak ada solusi di sini yang membantu saya.

Saya menemukan bahwa formulir dengan satu bidang teks akan menyebabkan browser melakukan pengiriman formulir (dan mengakibatkan penutupan), jika Anda menekan Enter saat fokus keyboard berada pada bidang teks. Ini tampaknya lebih merupakan masalah browser / formulir daripada apa pun dengan Bootstrap.

Solusi saya adalah menyetel atribut onsubmit formulir ke onsubmit = "return false"

Ini mungkin menjadi masalah jika Anda benar-benar menggunakan acara kirim, tetapi saya menggunakan kerangka kerja JS yang menghasilkan permintaan AJAX daripada melakukan pengiriman browser, jadi saya lebih suka menonaktifkan pengiriman seluruhnya. (Ini juga berarti saya tidak perlu mengubah setiap elemen formulir secara manual yang mungkin memicu pengiriman).

Info selengkapnya di sini: Dialog modal bootstrap dengan satu bidang input teks selalu ditutup pada tombol Enter

jpeskin.dll
sumber
2
Saya sudah memiliki type="button"semua tombol tutup / batal, tetapi masih memiliki masalah ini dengan tombol enter yang menutup modal saya. Saya hanya memiliki 1 bidang teks masukan di modal saya, dan solusi Anda memperbaikinya. Terima kasih atas jawaban anda!
Darren Parker
7

Anda dapat meletakkan tombol masuk sebelum tombol batal dan ini akan menyelesaikan masalah yang Anda alami juga.

<div class="modal-footer">
    <button type="submit" class="btn primary">Login</button>
    <button type="submit" class="btn" data-dismiss="modal">Cancel</button>
</div>
Ryan
sumber
6
Batal seharusnya tidak menjadi tipe kirim
Manatax
5

Saya memiliki masalah yang sama, dan saya menyelesaikannya dengan

<form onsubmit="return false;">

tetapi ada satu solusi lagi, Anda dapat menambahkan input tak terlihat dummy, sehingga formulir Anda akan terlihat seperti ini:

<form role="form" method="post" action="submitform.php">
    <input type="text" id="name" name="name" >
    <input type="text" style="display: none;">
</form>
Igor Lovrić
sumber
3

Saya memiliki pengalaman serupa sekarang dan cara saya menyelesaikannya adalah alih-alih menggunakan tag, saya mengubah tag menjadi tag dengan type = "button". Ini sepertinya memecahkan masalah menekan tombol "enter" dan menutup modal bootstrap.

wmock
sumber
2

Saya memiliki masalah ini juga dan saya menyelesaikannya dengan cara ini. Saya menambahkan onsubmit ke formulir. Saya juga ingin dapat menggunakan tombol enter sebagai kunci penyimpanan, jadi saya menambahkan javascript save_stuff () ke onsubmit. return false; digunakan untuk mencegah pengiriman formulir.

<form onsubmit="save_stuff(); return false;">
 ...
</form>

<script>
    function save_stuff(){
      //Saving stuff
    }
</script>
Firze
sumber