我正在尝试做与this page正在做的事情类似的事情。
唯一的区别是我使用的jQuery UI对话框是模态的。
我尝试在页面中编辑脚本以使jQuery UI对话框模态化。
$("#dialog-modal").dialog(
{
modal: true, // added this line to make dialog modal
width: 600,
height: 400,
open: function(event, ui)
{
var textarea = $('<textarea style="height: 276px;">');
$(textarea).redactor({
focus: true,
maxHeight: 300,
initCallback: function()
{
this.code.set('<p>Lorem...</p>');
}
});
}
});
然后我点击插入链接按钮(工具栏右侧的第3个按钮)。这显示了另一个带有表单的jQuery UI模式对话框。
我注意到我无法获得文本字段的焦点。我无法在其中输入任何内容。
如果我没有制作第一个模式对话框,代码就可以正常工作。
知道如何规避这个吗?
答案 0 :(得分:-1)
我遇到了同样的问题。此行为是jQuery UI处理文档上的focusin.dialog
事件,并将焦点放回堆栈中的最后一个jQuery UI对话框(使用选择器".ui-dialog:visible:last"
)的结果。我在创建模态对话框后立即调用此代码解决了这个问题:
setTimeout(function() {
$(document).unbind("focusin.dialog");
}, 100);
我使用setTimeout
,因为jQuery UI也使用setTimeout
来绑定此事件。由于这个答案,我能够解决它:jQuery UI Focus Stealing。我也尝试升级到jQuery UI 1.11.4,但这并没有解决问题。