用tinyMCE获取内容

getting contents with tinyMCE?

本文关键字:获取 tinyMCE      更新时间:2023-09-26

我有一个tinyMCE文本区域#frmbody,正在使用它的jquery实例。

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

我正在尝试获取用户键入的文本区域的内容。

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

上面的代码不起作用,我不知道为什么。如果我删除tinyMCE实例,上面的代码就可以正常工作。有什么想法吗?

这是因为TinyMCE的实例不是真正的文本区域,所以不会检测到keyup事件。请尝试onchange回调。

您可以通过以下方式使tinyMCE成为自己的侦听器:http://www.tinymce.com/wiki.php/API3:event.tinymce.Editor.onKeyUp

或者编写自己的并使用内置函数getContent:http://www.tinymce.com/wiki.php/API3:method.tinymce.Editor.getContent

可以使用获取编辑器的内容

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是fire。

编写自己的处理程序并将其分配给编辑器iframe文档非常容易。已经定义了各种事件的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);
TinyMCE隐藏文本区域并创建一个html容器。如果在框中写入内容,则它是一个名为"TEXTAREANAME_ifr"的iFrame。

所以试试这个:

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

我认为正如Thariama已经说过的,TinyMCE的EventHandler将是最好的方式。