javascript - Flatpickr + SweetAlert2 = 键盘辅助功能问题

标签 javascript html sweetalert2 flatpickr

重现链接: https://jsfiddle.net/isaporto/hav7pqs5/

HTML:

<button>
 Click here
</button>

JS:

document.querySelector('button').addEventListener('click', () => {
  Swal.fire({
    title: 'Select a date',
    html: `<div id="modal-content">
             <form>
               <input type="text" class="flatpickr">
             </form>
           </div>`,
    showConfirmButton: false,
  })
  flatpickr(".flatpickr", {
    dateFormat: "d/m/Y",
    minDate: new Date(),
    static: true
  })
})

当 datepickr 输入获得焦点并且用户单击向下箭头键时,它应该获得焦点并允许我们使用键盘在 flatpick 日历中导航,但在 sweetalert 模式中不会发生这种情况 与 bootstrap modal 不同,Sweetalert2 modal 是通过 ajax 插入到树中的,但我不知道这是否是导致 bug 的原因。

最佳答案

默认情况下,SweetAlert2 将在显示模式时停止将 keydown 事件传播到文档。

另一方面,Flatpickr 将其弹出窗口添加到文档的 body 中,位于 SweetAlert2 容器之外。

为了修复 SweetAlert2 内部 Flatpickr 的键盘 a11y,您必须使用 stopKeydownPropagation 来启用 keydown 事件的传播。参数:

Swal.fire({
  ...
  stopKeydownPropagation: false
})

SweetAlert2 内部的 Flatpickr 现场演示可以在这里找到:https://sweetalert2.github.io/recipe-gallery/input-date-flatpickr.html

关于javascript - Flatpickr + SweetAlert2 = 键盘辅助功能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67068583/

相关文章:

javascript - 在 react 中,如果我将 shouldComponentUpdate 设置为 false,我发送给子级的任何状态都会更新吗?

javascript - Draggabilly 不向新添加的元素添加事件

javascript - Sweetalert2 重定向

javascript - 如何在甜蜜警报关闭时收听

javascript - 捕获(不同)打印/取消打印按钮事件(单击)

javascript - 标记文本中的几个单词

javascript - Sequelize - 如何访问 M :M 中的连接表

javascript - 在文本区域编辑中显示提交按钮

javascript - FireFox 中的 scrollHeight 属性

javascript - jQuery on() 事件不会为 sweetalert2 文本框触发