2012-03-27 108 views
3

我有一个tinyMCE textarea #frmbody,并使用它的jquery实例。使用tinyMCE获取内容?

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

我试图获取作为用户类型的textarea的内容。

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

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

+0

不知道,但很可能是tinyMCE创建(或重新创建)一个你实际输入的不同textarea,所以'#frmbody'从来没有任何关键活动。 – Mikhail 2012-03-27 18:33:46

+0

我也在想。我会继续挖掘和搜索。谢谢 – Mike 2012-03-27 18:34:54

+0

唯一的其他事情是,当我检查$ _POST值时,frmbody就在那里。 – Mike 2012-03-27 18:36:10

回答

2

这是因为TinyMCE的一个实例不是真正的textarea,所以没有检测到keyup事件。改为尝试onchange callback

0

这是很容易写的自己的处理程序,并把它分配给编辑iframe文件。 有喜欢keyUp

已经定义各种事件处理程序TinyMCE的下面是一个自己的处理程序分配给编辑器IFRAME文档

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

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

TinyMCE的隐藏的文本区域,并创建一个HTML容器的标准方式。如果您在包装盒中写入名为"TEXTAREANAME_ifr"的iFrame内容。

那么试试这个:

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

我觉得作为Thariama已经表示,从TinyMCE的的事件处理程序将是最好的方式。

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(); 

请注意,当用户没有重点,按Enter或按下工具栏按钮而不是每次击键时,onchange都会触发。