2010-02-06 3 views
21

Я использую TinyMCE для текстового поля на странице, но он не играет хорошо в порядке табуляции других элементов.Как вы устанавливаете фокус элемента textarea TinyMCE?

я могу использовать следующий код для захвата, когда я вкладка из первого элемента:

$('#title').live('keypress', function (e) { 
    if(e.keyCode == 9) { 
     alert('tabbed out'); 
    } 
}); 

Как я могу установить фокус на редактор TinyMCE?

ответ

40

Наконец нашел ответ ... используйте команду:

tinymce.execCommand('mceFocus',false,'id_of_textarea'); 

Для моих целей 'id_of_texterea' был "описание", то есть

<textarea id="description" ... ></textarea> 

В элементе формы, который предшествовал моему текстовому пространству, я добавил execCommand выше в eleme nt "onblur".

+0

для более реалистичного подхода, вы можете связать этот execCommand с нажатием клавиши tab на предыдущем элементе формы. – jbnunn

+0

спасибо за это руководство! я беспокоюсь об этом! – 2011-03-19 05:39:46

2

Это должно передать фокус в текстовое поле TinyMCE:

$("#id_of_tinyMCE_area").focus(); 
+3

Кажется, что в TinyMCE многое происходит в фоновом режиме, и это не сработает. – Failpunk

12

Фокусировка также работает следующим образом:

tinyMCE.get('id_of_textarea').focus() 

Отъезд TabFocus плагин, который делает именно то, что вы хотите:

http://tinymce.moxiecode.com/tryit/tab_focus.php

+0

Работал для меня .. 10+ –

9

Если вы используете TinyMCE с JQuery. Ниже будет работать

$("#id_of_textarea").tinymce().focus(); 

Вы можете сделать это только после того, как редактор инициализации, хотя и поэтому вам, возможно, придется ждать на одном из его инициализации событий.

7

Что действительно работает, это установка опции в configfile (или файл jquery). Эта опция позволяет вам автоматически сфокусировать экземпляр редактора. Значение этого параметра должно быть идентификатором экземпляра редактора. Идентификатор экземпляра редактора - это id для исходного текстового поля или <div>, который был заменен.

Пример использования опции auto_focus:

tinyMCE.init({ 
    //... 
    auto_focus : "elm1" 
}); 
+0

Работал отлично здесь. Я поставил условие на свой код, который проверяет наличие атрибута «автофокус» на поле textarea. Если true, auto_focus устанавливается в textarea id, иначе auto_focus устанавливается на false. –

19

Я знаю, что это старый пост, но только, чтобы добавить свой вход о том, редактор с открытым и фокус не работает. То, что я обнаружил, что работал для меня это:

tinyMCE.activeEditor.focus(); 

я должен был установить это в случае window.setTimeout из-за того, как я использую объекты JS и тому подобное. Надеюсь это поможет.

+0

Это хорошо сработало для меня: setTimeout ("try {tinymce.activeEditor.focus()} catch (e) {}", 2000); –

+0

Работал для меня :-) Получил мое преимущество – gchq

5

Похоже, для TinyMCE 4 некоторые из этих решений больше не работают.

// Не похоже, чтобы работать на TinyMCE 4

tinymce.execCommand('mceFocus',false,'id_of_textarea'); 

// Не работает

$("id_of_textarea").tinymce().focus(); 

tinyMCE.activeEditor.focus(); 

Что работает для меня

// Прекрасно работает в Chrome, но совсем не в Firefox

tinyMCE.init({ 
    //... 
    auto_focus : "id_of_textarea" 
}); 

// Добавить это так Firefox работает

init_instance_callback : "customInitInstanceForTinyMce", // property to add into tinyMCE.init() 

function customInitInstanceForTinyMce() { 
    setTimeout(function() {       // you may not need the timeout 
     tinyMCE.get('Description').focus(); 
    }, 500); 
} 
+0

Im работает с tinymce 4.x, и этот работает для меня: tinymce.execCommand ('mceFocus', false, 'id_of_textarea'); Я запускаю эту команду ПОСЛЕ всех инициализированных, и редактор отображается на экране. – Jonny

4
tinyMCE.get('Description').getBody().focus();

Вышеприведенные работает в Firefox, Chrome и IE, а также. Я не тестировал в других браузерах.

+0

Не знаю, почему, но принятый ответ не сработал для меня, в то время как этот. – Marcus

+0

Спасибо @Marcus !! –

+0

Эта работа –

0

Я получил его на работу с TinyMCE 4.x, используя следующие:

tinymce.EditorManager.get('id_of_editor_instance').focus();

0

Я использую следующую функцию, чтобы сфокусировать редактор с thinyMCE Это с помощью JQuery, но будет легко удалить это и использовать document.querySelectorAll(). Используйте babel, если вам это нужно в es5.

let focusEditor = function(editorContainer) { 
    let tinymce; 
    if (/iPad|iPhone|iPod/.test(navigator.platform)) { return; } 
    let id = $('.text-editor', editorContainer.innerHTML).first().attr('id'); 
    if (tinymce = window.tinyMCE.get(id)) { 
    try { 
     return tinymce.focus(); 
    } catch (error) { 
     return tinymce.on('init', function() { return this.focus(); }); 
    } 
    } else { 
    return $(`#${id}`, editorContainer).focus(); 
    } 
} 

Редактор Контейнер - это любой элемент, окружающий текстовое поле tinyMCE. DIV с идентификатором «текст-контейнер» можно назвать focusEditor($('#text-container')) или в React focusEditor(React.findDOMNode(this))

0

Это работает для меня (TinyMCE версия 4.7.6):

tinymce.activeEditor.fire("focus") 
Смежные вопросы