Bootstrap 如何禁用Twitter引导模式的Escape键?

yws3nbqq  于 2023-01-10  发布在  Bootstrap
关注(0)|答案(8)|浏览(155)

在显示的模态中有一个表单。如果我聚焦在输入字段(任何字段)上并按ESC键,该模态将隐藏。但是,如果我不聚焦在表单字段上,则按ESC键不会关闭模态。这是怎么回事?
我想完全禁用模态的ESC键功能。我尝试了以下方法:

$(document).on('keypress', function(e) {
  if(e.keyCode == 27) {
    e.preventDefault();
    return false;
  }
}

但这并不影响任何东西,有没有办法完全禁用模态的ESC键?

llew8vvj

llew8vvj1#

通过添加data-keyboard="false"解决了该问题。
大概是这样的<div class="modal hide fade" data-keyboard="false" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">

juud5qan

juud5qan2#

Twitter的Bootstrap modal.js(见http://getbootstrap.com/2.3.2/javascript.html#modals)本身有键盘真或假布尔值。你可以使用下面的脚本避免在模态之外按转义键和点击:

$(function () {
        $('.modal').modal({
            show: true,
            keyboard: false,
            backdrop: 'static'
        });
    });

工作演示:
x一个一个一个一个x一个一个二个x

zd287kbt

zd287kbt3#

如果模式对话框如下所示

<div id="myModal" class="modal hide fade" tabindex="-1" ...>
   ....
</div>

删除**tabindex="-1”**应禁用Escape键。

4dc9hkyq

4dc9hkyq4#

您需要data-keyboard="false"data-backdrop="static"
工作演示:

<!doctype html>
<html lang="en">
  <head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

    <!-- Bootstrap CSS -->
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">

    <title>Hello, world!</title>
  </head>
  <body>
   
    <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
  </body>
  
  <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal">
  Launch demo modal
</button>


  <div class="modal" id="exampleModal" tabindex="-1" role="dialog" data-keyboard="false" data-backdrop="static">
  <div class="modal-dialog" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title">Modal title</h5>
        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <div class="modal-body">
        <p>Modal body text goes here.</p>
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
        <button type="button" class="btn btn-primary">Save changes</button>
      </div>
    </div>
  </div>
</div>


</html>
8gsdolmq

8gsdolmq5#

将键盘值设置为false!
示例:

<a data-controls-modal="myModal"
   data-backdrop="static"
   data-keyboard="false"
   href="#">

或者,如果您使用JavaScript:

$(function () {
$('.modal').modal({
  backdrop: 'static',
  keyboard: false
});
}
whhtz7ly

whhtz7ly6#

> keyboard: true

 Closes the modal when escape key is pressed.

> keyboard: false

 Prevent closing the modal when escape key is pressed
    • JQuery演示代码**

$('# myModal').模态({显示:真,键盘:错误});

g6ll5ycj

g6ll5ycj7#

使用Bootstrap 5,您需要添加:

data-bs-backdrop="static" data-bs-keyboard="false"

see https://getbootstrap.com/docs/5.0/components/modal/#static-backdrop

r7knjye2

r7knjye28#

您可以通过向其添加ID并简单地删除输入的keydown事件来定位特定输入,如下所示:
JS系统

$(document).ready(function() {
  $('form input').keydown(function(event){
    if(event.keyCode == 13) {
      event.preventDefault();
      return false;
    }
  });
});

此示例使用Enter键。

相关问题