在 Bootstrap 中启动 Modals 时如何在文本框上进行 .focus()

Posted

技术标签:

【中文标题】在 Bootstrap 中启动 Modals 时如何在文本框上进行 .focus()【英文标题】:How to .focus() on textbox when Modals are launched in Bootstrap 【发布时间】:2019-06-03 15:36:07 【问题描述】:

当我打开这个 Modal 时,我需要用鼠标将光标移到文本框

所以我想在模式打开后立即focus() 在文本框上

Css 和 JS 文件

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"></script>

Javascript 代码

<script type="text/javascript">
    $(document).ready(function()
        $('.launch-modal').click(function()
            $('#myModal').modal(
                backdrop: 'static'
            );
        // document.form1.focushere.focus();
    ); 
    );
</script>

HTML 代码

<body>
    <form name="form1">
        <!-- Button html (to Trigger Modal) -->
        <input type="button" class="btn btn-lg btn-primary launch-modal" value="Launch Demo Modal">

        <!-- Modal HTML -->
        <div id="myModal" class="modal fade">
            <div class="modal-dialog">
                <div class="modal-content">
                    <div class="modal-header">
                        <h4 class="modal-title">Confirmation Box</h4>
                        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
                    </div>
                    <div class="modal-body">
                        <input type="text" id="" name="focushere">
                    </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>
    </form>
</body>
</html>                             

【问题讨论】:

这有帮助吗? ***.com/questions/26021493/… 我也喜欢这个,它使用一个简单的对话框打开事件***.com/questions/6291585/… 【参考方案1】:

基本上它不起作用,因为未加载模式,因此没有任何 Javascript 可以保留的字段。

你可以修改代码来做这样的事情:

  $('#myModal').on('shown.bs.modal', function() 
    document.form1.focushere.focus();
  )

模态加载时会运行focus()函数。

看到这个答案:Twitter bootstrap - Focus on textarea inside a modal on click

【讨论】:

具体应该写在哪里。 @AjinkyaRathod 这替换了你注释掉的代码,这个// document.form1.focushere.focus(); 我评论了那行,因为那行没有聚焦文本框 是的,但是用我的答案中的代码替换它,它现在应该可以工作了。看看这个 Jsfiddle:jsfiddle.net/wf714L9o

以上是关于在 Bootstrap 中启动 Modals 时如何在文本框上进行 .focus()的主要内容,如果未能解决你的问题,请参考以下文章

通过 Bootstrap Modals PHP MySQL 创建搜索记录表单

Bootstrap Modals 关闭后继续向 body 添加 padding-right

如何将 twitter bootstrap modal 设置得越来越宽?

Bootstrap 模式关闭按钮

如何在打字稿中使用 angular-ui-bootstrap(模态)?

IOS,应用启动时如何处理多个本地通知?