我在Bootstrap Modal中有一个TinyMce实例.
当我单击“插入/编辑链接”按钮时,模态会正确打开,但文本字段无法聚焦
该复选框可以正确交互,但是如果我单击输入字段,则不会发生任何事情.有想法吗?
解决方法:
这里发生的实际问题是,大多数模态系统(Bootstrap Modal,Magnific Popup等)不允许聚焦不是模态子级的表单域.由于TinyMCE将其对话框附加到主体而不是模态窗口,因此将其视为模态之外的对象,从而避免了聚焦.
为了使用户能够聚焦TinyMCE对话框字段,您需要明确告诉模态系统允许在这些额外的对话框中聚焦.
在自举模式中(也是on TinyMCE’s website)
// Prevent bootstrap dialog from blocking focusin
$(document).on('focusin', function(e) {
if ( $(e.target).closest(".container-of-dialog-i-want-to-be-able-to-use").length ) {
e.stopImmediatePropagation();
}
});
在“宏伟的弹出窗口”中(也为on GitHub,也为related discussion)
$.magnificPopup.open({
/** settings **/
callbacks: {
open: function() {
$.magnificPopup.instance._onFocusIn = function(e) {
// Do nothing if target element is select2 input
if( $(e.target).closest( '.container-of-dialog-i-want-to-be-able-to-use' ) ) {
return true;
}
// Else call parent method
$.magnificPopup.proto._onFocusIn.call(this,e);
};
}
}
});
显然,如前所述,您应该将.container-of-dialog-i想要使用,替换为…您猜对了…对话框容器的选择器.这个想法是模态仍然会阻止所有在模态之外的焦点,除非您试图将焦点集中在指定的其他“可接受”容器内.
我不确定100%是否有一个选择器可以捕获曾经生成的所有TinyMCE对话框,但出于我的用途-我专门将其与WordPress的链接面板配合使用-我成功使用了.mce-container, #wp-link-wrap作为选择器.