2014-09-08 2 views
2

Не уверен, что кто-либо когда-либо испытывал эту проблему с вашим TinyMCE. У меня есть обработчик события изменения, который изменяет значение другого элемента. Смотрите код инициализации ниже:Действие отмены TinyMCE не запускает событие изменения

/** Initialize TinyMCE inline editor for headline text */ 
tinymce.init({ 
    selector: ".editable.headline", 
    paste_as_text: true, 
    inline: true, 
    toolbar: "undo redo", 
    menubar: false, 
    verify_html: false, 
    font_formats: "MuseoSans = sans-serif;", 
    setup: function(ed) { 
     var text = ''; 
     var wordlimit = 200; 
     /** handler for keydown event to prevent < 200 character limit */ 
     ed.on('keydown',function(e) { 
      text = ed.getContent().replace(/(< ([^>]+)<)/g, ''); 
      wordcount = wordlimit - (text.length); 
       if(wordcount <= 0 && e.keyCode != 8) { 
        e.preventDefault(); 
        e.stopPropagation(); 
        return false; 
       } 
     }); 
     /** handler for headline text changes */ 
     ed.on('change',function(e) { 
      var content = tinyMCE.get(ed.id).getContent(); 
      var escapedClassName = ed.id.replace(/(\[|\])/g, '\\$&'); 
      $('.'+escapedClassName).html(content); 

     }); 
    } 
}); 

Когда я тип/вставка текста огнь change события должным образом, однако, когда я отменить текст изменяет change события не срабатывает должным образом.

Любые идеи, как я могу заставить огонь change событие по отмене и повторению событий?

Любая помощь была бы принята с благодарностью!

ответ

4

Содержание не очень легко найти, но сайт TinyMCE описывает список events that are fired during the course of the editor's life cycle (смотрите заголовок «События») и объясняет, когда эти события уволены.

В вашем сценарии, просто добавьте заново и отменить события в функции on вызовов, в функции setup.

setup: function (ed) { 
    ed.on('change redo undo',function(e) { 
     var content = tinyMCE.get(ed.id).getContent(); 
     var escapedClassName = ed.id.replace(/(\[|\])/g, '\\$&'); 
     $('.'+escapedClassName).html(content); 
    }); 
} 
0

Просто FYI, у меня была такая же проблема при изменении URL звена (это не вызывая каких-либо событий), и я решил, просто выпустив событие вручную:

tinymce.activeEditor.fire('change'); 
Смежные вопросы