刚刚开始使用Ace编辑器(http://ace.ajax.org),虽然它在常规编辑器上工作正常,但只要我把它放在一个具有'modal:true'选项的jquery-ui对话框中,除了输入文本外,我可以做任何事情。也就是说,我可以选择,使用ctrl组合,甚至可以删除文本,但是我不能插入字母。箭头键和删除Ace编辑器中的工作,但键入文本不起作用
任何想法如何'模态:真'选项可能会干扰常规字符插入?是否有一个'stopPropagation'函数可以阻止关键笔划进入编辑器?
刚刚开始使用Ace编辑器(http://ace.ajax.org),虽然它在常规编辑器上工作正常,但只要我把它放在一个具有'modal:true'选项的jquery-ui对话框中,除了输入文本外,我可以做任何事情。也就是说,我可以选择,使用ctrl组合,甚至可以删除文本,但是我不能插入字母。箭头键和删除Ace编辑器中的工作,但键入文本不起作用
任何想法如何'模态:真'选项可能会干扰常规字符插入?是否有一个'stopPropagation'函数可以阻止关键笔划进入编辑器?
问题是jQuery对话框在允许事件继续之前在目标元素(在本例中,Ace编辑器的textarea)上寻找z索引。在写这篇文章的时候,这是他们做此项检查:
jquery.ui.dialog.js开始上线685
create: function(dialog) {
if (this.instances.length === 0) {
...
setTimeout(function() {
// handle $(el).dialog().dialog('close') (see #4065)
if ($.ui.dialog.overlay.instances.length) {
$(document).bind($.ui.dialog.overlay.events, function(event) {
// stop events if the z-index of the target is < the z-index of the overlay
// we cannot return true when we don't want to cancel the event (#3523)
// HERE's THE CHECK
if ($(event.target).zIndex() < $.ui.dialog.overlay.maxZ) {
return false;
}
});
}
}, 1);
有几种方法来处理这个,但我发现最简单的将Ace的textarea的z-index设置为一个非常高的值。这里就是我这样做的CSS的一部分:在开始上线16211.
"\n" +
".ace_editor textarea {\n" +
" position: fixed;\n" +
" z-index: 2000;\n" +
我设法通过调整与jQuery的CSS,而不是编辑王牌源来实现这个
ace_uncomplessed.js。
$('.ace_editor textarea').css('z-index','2000');
你使用的是什么样的对话框? – polarblau