Làm thế nào để bạn kích hoạt chức năng đóng phím thoát trong chế độ Twitter Bootstrap?


132

Tôi đã làm theo các hướng dẫn cho phương thức Twitter Bootstrap trên trang tài liệu chính của họ
và sử dụng data-keyboard="true"cú pháp được đề cập nhưng phím thoát không đóng cửa sổ phương thức.
Có cái gì khác tôi đang thiếu?

Mã số:

<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
Điều này được bật theo mặc định
Adam F

Câu trả lời:


301

Có vẻ như đây là một vấn đề với cách sự kiện keyup bị ràng buộc.

Bạn có thể thêm tabindexthuộc tính cho bạn phương thức để khắc phục vấn đề này:

tabindex="-1"

Vì vậy, mã đầy đủ của bạn sẽ trông như thế này:

<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>

Để biết thêm thông tin, bạn có thể xem các cuộc thảo luận về vấn đề này trên github

(Liên kết cập nhật đến kho lưu trữ TWBS mới)


3
Điều này mặc dù ngăn tự động lấy nét từ các trường đầu vào.
cởi trần

3
Bạn cũng có thể nối thuộc tính bàn phím dữ liệu vào div.modal của mình (và bỏ qua nó trong người gọi) nếu bạn gọi hộp thoại từ nhiều nơi.
Vitalik Verhovodov

2
Như @nrek chỉ ra bên dưới - gần với thoát là đúng, vì vậy bạn không thực sự cần data-keyboard="true"- điều tabindex="-1"đó cho phép hành vi
Leo

Tôi có thể xác nhận rằng giải pháp này hoạt động trong Bootstrap 4. Tôi không biết tại sao nó không hoạt động theo mặc định như các tài liệu nói.
Binar Web

Hơn nữa, data-keyboardthuộc về yếu tố phương thức, không phải bộ điều khiển. Điều này có thể được kiểm tra bằng cách đặt nó thành false.
WoodrowShigeru

23

ngoài ra nếu bạn đang gọi qua javascript, hãy sử dụng điều này:

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

15
đây từng là điều duy nhất bạn phải làm, nhưng bây giờ bạn cũng cần đảm bảo rằng div của bạn có thuộc tính 'tabindex = "- 1"'.
Bala Clark

1
Tôi chỉ phải đặt chỉ mục tab.
Weltschmerz

@dchacke đó là vì thuộc tính bàn phím được mặc định là đúng! vì vậy chỉ cần đặt tabindex = '- 1'
nrek

12

thêm tabindex="-1"thuộc tính vào phương thức div

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

</div>

3

Trong góc tôi đang sử dụng như thế này:

var modalInstance = $modal.open({                        
 keyboard: false,
 backdrop: 'static',
 templateUrl: 'app/dashboard/view/currentlyIneligibleView.html',
 controller: 'currentlyIneligibleCtrl',
 resolve: {
     data: function () { return param; }
    }
});
  • backdrop: 'static' => Dừng để đóng khi nhấp vào bên ngoài
  • bàn phím: false => Dừng để đóng bằng cách sử dụng thoát mông

-1

Bootstrap 3

Trong HTML, chỉ cần đặt data-backdropthành tĩnh và data-keyboardsai

Thí dụ :

<button type="button" data-toggle="modal" data-target="#myModal" data-backdrop="static" data-keyboard="false">Launch modal</button>

hoặc là

$('#myModal').modal({
  backdrop: 'static',
  keyboard: false
}) 

Kiểm tra trực tiếp:

https://jsfiddle.net/sztx8qtz/

Biết thêm: http://budiiINA.com/prevent-bootstrap-modal-closes/


Ví dụ của bạn không bật khóa thoát
Binar Web
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.