получать содержимое с tinyMCE? - PullRequest
3 голосов
/ 27 марта 2012

У меня есть tinyMCE textarea #frmbody, и я использую его экземпляр jquery.

<textarea class="tinymce" name="frmbody" id="frmbody" cols="30" rows="20"></textarea>

Я пытаюсь получить содержимое текстовой области по мере ввода пользователем.

$("#frmbody").live('keyup', function(e) {
    alert("keyup");
});

Код выше не работает, и я не уверен, почему.Если я удаляю экземпляр tinyMCE, приведенный выше код работает нормально.Есть идеи?

Ответы [ 5 ]

2 голосов
/ 27 марта 2012

Это потому, что экземпляр TinyMCE не является настоящей текстовой областью, поэтому события keyup не обнаруживаются.Попробуйте вместо этого onchange callback .

1 голос
/ 08 июня 2013

Можно просто получить содержимое редактора, используя:

tinymce.activeEditor.getContent();

Если вы хотите прикрепить событие onchange, согласно этой странице, http://www.tinymce.com/wiki.php/api4:class.tinymce.Editor, создайте редактор, используя следующий код:

var ed = new tinymce.Editor('textarea_id', { 
    init_setting_item: 1,
    ...
}, tinymce.EditorManager);

ed.on('change', function(e) {
    var content = ed.getContent();
    $("#textarea_id").val(content); // update the original textarea with the content
    console.log(content);
});

ed.render();

Обратите внимание, что onchange срабатывает, когда пользователь не фокусируется, нажимает ввод или нажимает кнопку на панели инструментов вместо каждого нажатия клавиши.

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

Вы можете создать собственного обработчика tinyMCE: http://www.tinymce.com/wiki.php/API3:event.tinymce.Editor.onKeyUp

или написать свой собственный и использовать встроенную функцию getContent: http://www.tinymce.com/wiki.php/API3:method.tinymce.Editor.getContent

0 голосов
/ 28 марта 2012

TinyMCE скрывает область текста и создает HTML-контейнер. Если вы пишете содержимое в поле, это iFrame с именем "TEXTAREANAME_ifr".

Так попробуйте это:

$("#frmbody_ifr").live('keyup', function(e) {
    alert("keyup");
});

Я думаю, что, как Тариама уже сказал, EventHandler из TinyMCE будет лучшим способом.

0 голосов
/ 28 марта 2012

Очень легко написать собственный обработчик и присвоить его редактору iframe document.Существуют обработчики tinymce для различных уже определенных событий, таких как keyUp

Вот стандартный способ назначить собственный обработчик редактору документа iframe

var my_handler = function(event) {
    alert('my handler fired!');
};

var ed = tinymce.get('my_editor_id');
$(ed.getDoc()).bind('keyup', my_handler);
...