2011-11-05 35 views
0

剛剛開始使用Ace編輯器(http://ace.ajax.org),雖然它在常規編輯器上工作正常,但只要我把它放在一個具有'modal:true'選項的jquery-ui對話框中,除了輸入文本外,我可以做任何事情。也就是說,我可以選擇,使用ctrl組合,甚至可以刪除文本,但是我不能插入字母。箭頭鍵和刪除Ace編輯器中的工作,但鍵入文本不起作用

任何想法如何'模態:真'選項可能會干擾常規字符插入?是否有一個'stopPropagation'函數可以阻止關鍵筆劃進入編輯器?

+0

你使用的是什麼樣的對話框? – polarblau

回答

1

問題是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" + 
1

我設法通過調整與jQuery的CSS,而不是編輯王牌源來實現這個

ace_uncomplessed.js。

$('.ace_editor textarea').css('z-index','2000');