Клавиши со стрелками и удалить работу в редакторе Ace, но ввод текста не работает - PullRequest
0 голосов
/ 05 ноября 2011

Только что начал использовать редактор Ace (http://ace.ajax.org) и хотя он отлично работает на обычном редакторе, как только я помещаю его в диалог jquery-ui, в котором есть опция 'modal: true', я могу делать все, кроме введите текст, то есть я могу выбрать, использовать комбинации ctrl и даже УДАЛИТЬ текст, но не могу вставить буквы.

Есть идеи, как эта опция 'modal: true' может мешать обычной вставке символов? Есть ли функция stopPropagation, которая может помешать нажатию клавиши попасть в редактор?

Ответы [ 2 ]

1 голос
/ 22 марта 2012

Мне удалось реализовать это, настроив CSS с помощью jQuery, а не отредактировав исходный код Ace.

$('.ace_editor textarea').css('z-index','2000');
1 голос
/ 07 ноября 2011

Проблема заключалась в том, что jquery-диалоги ищут z-index для целевого элемента (в данном случае текстовой области редактора Ace), прежде чем разрешить событие продолжаться. На момент написания этой статьи они проверяли:

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 );

Есть несколько способов справиться с этим, но я обнаружил, что проще всего было установить z-index для текстовой области Ace на действительно высокое значение. Вот часть CSS, где я сделал это:

ace_uncomplessed.js, начиная с строки 16211.

"\n" +
".ace_editor textarea {\n" +
"    position: fixed;\n" +
"    z-index: 2000;\n" +
...