bootstrap 模态框(modal)中的输入框如何获得焦点?

发布于 2022-09-06 15:53:56 字数 1023 浏览 14 评论 0

bootstrap 模态框中有个表单,模态框弹出后,如何让表单中的输入框自动获得焦点(即弹出后直接可以输入,不用再点击鼠标)?
我要的效果是这样的
图片描述

做法如下

    $('#renameModal').on('show.bs.modal', function (event) {
        var button = $(event.relatedTarget);
        var fileName = button.data('filename');
        var id = button.data('id');

        var modal = $(this);
        var renameForm = modal.find("#renameForm");
        var action = renameForm.attr("base-action");
        renameForm.attr("action", action+id);
        console.log(fileName);
        var renameInput = modal.find('.modal-body #file-name');
        renameInput.val(fileName);

        //获得焦点时文本全选
        renameInput.focus(function () {
            this.select();
        });
        renameInput.focus();
    });

但是没有效果,如图:
图片描述

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

请叫√我孤独 2022-09-13 15:53:56
//使用 shown.bs.modal 这个事件 试试看  show.bs.modal    在调用 show 方法后触发。 shown.bs.modal    当模态框对用户可见时触发(将等待 CSS 过渡效果完成)。
 $('#renameModal').on('shown.bs.modal', function (event) {
        var button = $(event.relatedTarget);
        var fileName = button.data('filename');
        var id = button.data('id');

        var modal = $(this);
        var renameForm = modal.find("#renameForm");
        var action = renameForm.attr("base-action");
        renameForm.attr("action", action+id);
        console.log(fileName);
        var renameInput = modal.find('.modal-body #file-name');
        renameInput.val(fileName);

        //获得焦点时文本全选
        renameInput.focus(function () {
            this.select();
        });
        renameInput.focus();
    });
绝對不後悔。 2022-09-13 15:53:56

应该可以直接在表单里加个autofocus属性吧,考虑兼容性可以挂个polyfill或者jQ插件。

冰雪梦之恋 2022-09-13 15:53:56

renameInput 是jq对象,不是dom对象,需要转化下

renameInput[0].focus();

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文