用tinyMCE获取内容?

时间:2012-03-27 18:31:04

标签: javascript jquery tinymce wysiwyg

我有一个tinyMCE textarea #frmbody并且正在使用它的jquery实例。

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

我正在尝试以用户类型获取textarea的内容。

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

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

5 个答案:

答案 0 :(得分:2)

那是因为TinyMCE的一个实例不是真正的文本区域,所以没有检测到密钥事件。请改为使用onchange callback

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

可以使用以下方式获取编辑器的内容:

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会激活,按回车键或按工具栏按钮而不是每次按键。

答案 3 :(得分:0)

编写自己的处理程序并将其分配给编辑器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);

答案 4 :(得分:0)

TinyMCE隐藏文本区域并创建一个html容器。如果您在框中写入内容,则其名称为"TEXTAREANAME_ifr"

的iFrame

所以试试这个:

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

我认为Thariama已经说过来自TinyMCE的EventHandler将是最好的方式。