Answer the question
In order to leave comments, you need to log in
TinyMCE : how to catch onBlur
I've been trying for several hours to catch the onblur event in TinyMCE) To no
avail ...
All advice boils down to:
setup: function (ed) {
ed.onInit.add(function (ed) {
jQuery('body', ed.getDoc()).blur(function (ev) {
alert('blur');
});
});
}
//сохраняем текущий текст
$('#ourTextarea').data('text',$('#ourTextarea').html());
//вешаем событие document.onclick, чтоб отловить потерю фокуса
jQuery(document).on('click.tinymce',myTinyBlur);
function myTinyBlur(ev) {
//проверяем не клацнули ли по какому-то объекту tinymce за пределами контейнера, например панели выбора цвета
//придется избегать в своем коде id и className начинающихся с mce... другого варианта не нашел
if ($(ev.target).closest("[id^='mce'],[class^='mce']").length > 0) return ;//это popup от tinymce
$(document).off('click.tinymce'); //убираем document.onclick;
var oldValue=$('#ourTextarea').data('text');
//если до этого текст был взят из элемента, то желательно перед сравнением со старым значением
//привести тэги в соотв. регистр, т.к. tinymce возвращает тэги в нижнем регистре. например так:
var newValue=$('<div/>').html($('#ourTextarea').html()).html();//var newValue=$('#ourTextarea').html();
if(oldValue != newValue) SAVE();
//уничтожаем редактор
}
Answer the question
In order to leave comments, you need to log in
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question