【问题标题】:Textarea doesn't get focus when bootstrap modal is opened打开引导模式时,Textarea 没有获得焦点
【发布时间】:2017-03-10 07:04:12
【问题描述】:

http://jsfiddle.net/h3WDq/1921/

当模式打开时,我无法输入 textarea。

Textarea 不是模态的,具有绝对定位,z-index 很大。

<textarea style='position:absolute;z-index:200000'></textarea>

任何人都可以解决这个问题吗?

【问题讨论】:

标签: javascript html bootstrap-modal


【解决方案1】:

看起来line of code 是每次显示模态时 Bootstrap 强制焦点的问题。所以让我们每次都删除事件:

$('#myModal1').on('shown.bs.modal', function (e) {
  $(document).off('focusin.modal');
})

fiddle

【讨论】:

  • 我在我的代码中添加了 DOMready 中的这段代码,它没有修复。但是在我的小提琴中它起作用了,是的
  • 你能帮忙吗?
  • 好的,让我更新我的答案以直接解决强制重点...
  • 等一下,这不是诀窍。尝试另一种方法。也许我们可以完全取消那个事件......
  • 您的代码在 Fiddle 中工作,但对于我的代码它什么也没提供)
【解决方案2】:

&lt;div id="myModal1" class="modal hide" tabindex="-1" role="dialog"&gt; 中删除tabindex="-1" 即可。不明白为什么tabindex 会造成这个问题。

【讨论】:

  • 如果我删除tabindex,会不会出问题?
  • tabindex 用于设置通过键盘按 Tab 时的焦点顺序。你可以在这里找到更多细节stackoverflow.com/questions/32911355/…
  • 所以,我不应该删除它
  • 文档说tabindex="-1" 用于在用户按下esc 键时使模式消失,所以这取决于你。
【解决方案3】:

如果有人在使用 Bootstrap Vue 并遇到同样的问题:

Bootstrap Vue 提供了一个名为“ignore-enforce-focus-selector”的 b-modal 属性。您可以使用此属性来提供一个选择器(包括一个逗号分隔的选择器列表),该选择器指定即使在模态可见时也可以聚焦的元素。在我的例子中,我有许多 textarea 元素需要在模态可见时成为焦点。将“ignore-enforce-focus-selector”设置为“textarea”可以在模式可见时编辑这些文本区域。

https://bootstrap-vue.org/docs/components/modal#keyboard-navigation

【讨论】:

    【解决方案4】:
    <textarea style='position:absolute;z-index:200000' autofocus></textarea>
    

    【讨论】:

    • 你在我的 Fiddle 中检查了吗?你的回答没有意义,也不起作用。
    • 虽然这段代码 sn-p 可以解决问题,但including an explanation 确实有助于提高帖子的质量。请记住,您正在为将来的读者回答问题,而这些人可能不知道您的代码建议的原因。也请尽量不要用解释性的 cmets 挤满你的代码,这会降低代码和解释的可读性!
    • 因为我从移动应用发布了答案,所以屏幕尺寸有限。以后会记住的。
    • @SonyaSeyrios 这个答案对你有帮助吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多