2014-10-02 3 views
0

Я пытаюсь вызвать предупреждение, когда пользователь покидает страницу, если он внес изменения в текстовые поля плагина TinyMCE.TinyMCE textarea не отвечает на событие onkeydown

Есть мой код. Он работает, если я использую нормальную форму textarea, но это не очень хорошо, когда я добавляю событие onkeydown в текстовое поле крошечного. Я собрал значение «cambios» с помощью консоли браузера, и я увидел, что он никогда не изменяет его значение.

JS:

var cambios = false; 

function change_cambios(){ cambios = true;} 

window.onbeforeunload = function() { 
    if(cambios) { 
     return confirm('Are you sure?'); 
    } 
    return; 
}  

HTML:

<form id="formulari" method="post" > 
     <textarea id="ap0sub2" name="area" onkeydown="change_cambios();"></textarea> 
    </form> 

Это прекрасно работает, если я использую его в TinyMCE плагин. Но когда я включаю текстовый редактор, значение «cambios» остается ложным.

Любые идеи?

Большое спасибо!

ответ

1

TinyMCE скрывает textarea и не представляет свой собственный contenteditable div поэтому является не KeyDown происходит на вашем текстовом поле. Вам нужно добавить слушатель события с помощью методов TinyMCE, когда вы инициализирует его:

tinyMCE.init({ 
    selector:'#ap0sub2', 
    setup : function(ed) { 
        ed.on('keydown', function(e) { 
        cambios = true; 
        console.log(cambios); 
        }); 
      } 
}); 

Работа демо: http://jsfiddle.net/exmdg7ha/

+0

О, Великий! Я не знал, что могу добавлять слушателей событий в методы редактора. Большое спасибо, теперь я могу сделать много вещей, которые, как я думал, я не могу :) – Katalhama

Смежные вопросы