剛剛開始使用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