Enter tuşuna basıldığında kalıcı olarak kapatmadan kaçının


108

İçinde bir form bulunan bir önyükleme modeli kurdum, sadece Enter tuşuna bastığımda modun iptal edildiğini fark ettim. Enter tuşuna basarken kapatmamanın bir yolu var mı?

Kipi klavye ile etkinleştirmeyi denedim: yanlış, ancak bu yalnızca ESC tuşuyla kapatmayı engelliyor.


Bu soruyu beğendim. Neden sadece eklentinin kaynak kodunu düzenlemiyorsunuz?
Ryan

Buna bir göz atacağım, yararlı bir şey bulursam düzenleyeceğim. Bu arada umarım birisi cevabı biliyordur.
Luke Morgan

Click.dismiss.modal'dan keyup'a geçtim, iyi görünüyor, daha sonra başka bir şeyi batırıp batırmadığımı görmek için tekrar kontrol edeceğim
Luke Morgan

Evet, bu düğmeleri berbat etti (bu sorunları önlemek için bir onclick = "$ ('# signinModal'). Modal ('hide');" ekledim, şimdi her şey yolunda görünüyor, öyle görünüyor)
Luke Morgan

Yanıtlar:


122

Ben de bu problemi yaşadım.
Benim sorunum, modelimde bir kapat düğmesinin olmasıydı.

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

Giriş alanında enter tuşuna basılması bu düğmenin ateşlenmesine neden oldu. Bunun yerine bir çapa olarak değiştirdim ve şimdi beklendiği gibi çalışıyor (enter, formu gönderir ve modeli kapatmaz).

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

Kaynağınızı görmeden, amacınızın aynı olduğunu teyit edemem.


Hayır, düğme kullanılmadı, <a> öğeleri kullandım, sanırım başka bir şey. Kullandığım kod temelde önyükleme sayfasındaki örnek koddur, sadece içine bir form eklenmiştir
Luke Morgan

Sağ üst köşedeki düğmeyi görmedim, sorun buydu. Şimdi iyi çalışıyor, teşekkürler!
Luke Morgan

+1, Mükemmel bul! Bunu bootstrap sorun izleyicisine koyan var mı acaba? Şu anda kontrol edemeyecek kadar tembelim. Belki öğle yemeğinden sonra.
Andrew

8
Bu sadece bir düğme sorunu değil. Modalimdeki tüm düğmeleri kaldırdım (sağ üst "x" dahil), ancak tek bir form metin alanım varsa, Enter tuşuna basmak iletişim kutusunu kapatır. Tuhaf bir şekilde, yalnızca tek bir metin alanı olduğunda sorun olur. İki tane elde ettiğimde, Enter hangi alanda odaklanırsa ele alınsın modeli reddetmez.
jpeskin

11
iptal düğmesinde type = "button" kullanılabilir
Muayyad Alsadi


19

Bootstrap Modal'ımdan TÜM düğmeleri kaldırdıktan sonra bile bu sorunu yaşadım, bu yüzden buradaki çözümlerden hiçbiri bana yardımcı olmadı.

Klavye odağı metin alanındayken Enter tuşuna basarsanız, tek bir metin alanına sahip bir formun tarayıcının bir form göndermesine (ve kapatılmasına neden olur) neden olacağını buldum. Bu Bootstrap ile ilgili her şeyden çok bir tarayıcı / form sorunu gibi görünüyor.

Çözümüm, formun onsubmit özniteliğini onsubmit = "return false" olarak ayarlamaktı

Gönder olayını gerçekten kullanıyorsanız bu bir sorun olabilir, ancak ben bir tarayıcı gönderimi yapmak yerine AJAX istekleri oluşturan JS çerçevelerini kullanıyorum, bu nedenle göndermeyi tamamen devre dışı bırakmayı tercih ediyorum. (Ayrıca, gönderimi tetikleyebilecek her form öğesini manuel olarak ayarlamam gerekmediği anlamına da gelir).

Daha fazla bilgi burada: Tek bir metin giriş alanına sahip önyükleme kalıcı iletişim kutuları her zaman Enter tuşuna basıldığında kapatılır


2
type="button"Tüm kapat / iptal düğmelerim zaten vardı , ancak yine de modalımı kapatan enter tuşuyla bu sorunu yaşadım . Modalimde sadece 1 giriş metin alanım vardı ve çözümünüz bunu düzeltti. Cevabınız için teşekkürler!
Darren Parker

7

Giriş düğmesini iptal düğmesinin önüne koyabilirsiniz ve bu, yaşadığınız sorunu da çözecektir.

<div class="modal-footer">
    <button type="submit" class="btn primary">Login</button>
    <button type="submit" class="btn" data-dismiss="modal">Cancel</button>
</div>

6
İptal türü gönder olmamalıdır
Manatax

5

Aynı sorunu yaşadım ve çözdüm

<form onsubmit="return false;">

ancak bir çözüm daha var, görünmez kukla girdi ekleyebilirsiniz, böylece formunuz şöyle görünecektir:

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

3

Az önce benzer bir deneyim yaşadım ve bunu çözme şeklim bir etiket kullanmak yerine, etiketi type = "button" olan bir etikete değiştirdim. Bu, "enter" tuşuna basma ve önyükleme modelini reddetme sorununu çözmüş görünüyordu.


2

Ben de bu sorunu yaşadım ve bu şekilde çözdüm. Onsubmit for form ekledim. Ayrıca kaydetme anahtarı olarak enter anahtarını kullanabilmek istedim, bu yüzden onsubmit'e save_stuff () javascript ekledim. yanlış dönüş; formun gönderilmesini engellemek için kullanılır.

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

<script>
    function save_stuff(){
      //Saving stuff
    }
</script>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.