如何防止在bootstrap模式中失去焦点?

问题描述 投票:2回答:3

看看bootstrap网站本身:

http://getbootstrap.com/javascript/#modals-related-target

虽然它与本段中的主题无关,但您可以打开带有输入字段的模态并尝试以下操作:聚焦输入字段,键入一些字符,切换到另一个窗口或浏览器选项卡,然后返回到模态。在Firefox中,重点输入不再集中。

我怎样才能重新关注最后关注的元素?或者我怎么能防止焦点丢失?

更新:提交问题on GitHub

firefox twitter-bootstrap-3 focus bootstrap-modal
3个回答
3
投票

与@SHAZ解决方案一起,当浏览器选项卡处于活动状态时,您还需要$(window).focus()函数来聚焦输入

$(function(){
   $('#myModal').on('shown.bs.modal', function () {
      $('#myTextId').focus()
   });
});

$(window).focus(function () {
   var input = document.getElementById("myTextId").focus();
});
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />
      
<!-- Button trigger modal -->
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#myModal">
  Launch demo modal
</button>

<!-- Modal -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
  <div class="modal-dialog" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
        <h4 class="modal-title" id="myModalLabel">Modal title</h4>
      </div>
      <div class="modal-body">
        <input type="text" id="myTextId" class="form-control" autofocus/>
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
        <button type="button" class="btn btn-primary">Save changes</button>
      </div>
    </div>
  </div>
</div>


<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>

Fiddle


2
投票

当qazxsw poi每次打开时,只需qazxsw poi你的输入字段。对于以下代码使用:


0
投票
$(function(){
   $('#myModal').on('shown.bs.modal', function () {
      $('#myTextId').focus()
   });
});

快乐的编码.. :)

© www.soinside.com 2019 - 2024. All rights reserved.