Bir Twitter Bootstrap modelinde kaçış anahtarı kapatma işlevini nasıl etkinleştirirsiniz?


132

Twitter Bootstrap modelinin talimatlarını ana dokümantasyon sayfalarında takip ettim
ve data-keyboard="true"belirtilen sözdizimini kullandım ancak kaçış anahtarı kalıcı pencereyi kapatmıyor.
Kaçırdığım başka bir şey var mı?

Kod:

<a href="#my-modal" data-keyboard="true" data-toggle="modal">Open Modal</a>

<div class='modal fade hide' id='my-modal'>
  <div class='modal-body'>
    <div>Test</div>
  </div>
</div>

2
Bu varsayılan olarak etkindir
Adam F

Yanıtlar:


301

Bu, keyup olayının nasıl bağlandığıyla ilgili bir sorun gibi görünüyor.

tabindexBu sorunu aşmak için özniteliği modalınıza ekleyebilirsiniz :

tabindex="-1"

Yani tam kodunuz şöyle görünmelidir:

<a href="#my-modal" data-keyboard="true" data-toggle="modal">Open Modal</a>

<div class='modal fade hide' id='my-modal' tabindex='-1'>
    <div class='modal-body'>
    <div>Test</div>
    </div>
</div>

Daha fazla bilgi için bu konudaki tartışmayı github'da görüntüleyebilirsiniz.

(Yeni TWBS deposuna bağlantı güncellendi)


3
Ancak bu, giriş alanlarından otomatik odaklamayı engeller.
üstsüz

3
Ayrıca, iletişim kutusunu birden çok yerden çağırırsanız, div.modal'ınıza veri klavyesi özniteliğini ekleyebilirsiniz (ve arayanlarda bunu atlayabilirsiniz).
Vitalik Verhovodov

2
@Nrek'in aşağıda işaret ettiği gibi - kaçış ile yakınlaşmak varsayılan olarak doğrudur, bu yüzden kesinlikle ihtiyacınız yoktur data-keyboard="true"- tabindex="-1"davranışı mümkün kılan budur
Aslan

Bu çözümün Bootstrap 4'te çalıştığını doğrulayabilirim. Dokümanların söylediği gibi neden varsayılan olarak çalışmadığını bilmiyorum.
Binar Web

Dahası, data-keyboarddenetleyiciye değil, mod öğesine aittir. Bu, olarak ayarlanarak test edilebilir false.
WoodrowShigeru

23

ayrıca javascript aracılığıyla çağırıyorsanız, şunu kullanın:

$('#myModal').modal({keyboard: true}) 

15
bu önceden yapmanız gereken tek şeydi, ancak şimdi div'inizin bir 'tabindex = "- 1"' özniteliğine sahip olduğundan emin olmalısınız.
Bala Clark

1
Sadece sekme indeksini ayarlamam gerekiyordu.
weltschmerz

@dchacke bunun nedeni klavye özelliğinin varsayılan değer olarak true olmasıdır! bu yüzden tabindex = '- 1' olarak ayarlayın
nrek

12

tabindex="-1"modal div'e özellik ekle

<div id="myModal" class="modal fade" role="dialog" tabindex="-1">

</div>

3

Açısal olarak şöyle kullanıyorum:

var modalInstance = $modal.open({                        
 keyboard: false,
 backdrop: 'static',
 templateUrl: 'app/dashboard/view/currentlyIneligibleView.html',
 controller: 'currentlyIneligibleCtrl',
 resolve: {
     data: function () { return param; }
    }
});
  • backdrop: 'static' => Dışarıya tıkladığınızda kapanmayı durdurun
  • keyboard: false => Çıkış butonunu kullanarak kapatmayı durdur

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.