我已经尝试了一段时间,找到一种使用jQuery在tinyMCE textarea中插入和修改文本的不错的方法,但收效甚微。人们提供的大多数答案通常仅用于单个tinyMCE文本区域,或者通过基于ID调用tinyMCE字段。这一切都很好,但我的项目让我在页面上动态创建重复的字段,这使得很难获得特定的tinyMCE元素。
在我实现tinyMCE之前,我正在通过他们的类与父div一起调用重复的字段。
例如:
$(this).parents(".main-category").find(".js-description").val(product_data['description_' + $('#language').val()]);
当我通过Dropbox更改产品时,会运行上面的代码。 “$(this)”作为dropbox,然后调用父div并找到描述textarea,然后输入正确的默认数据(从控制器传递)到字段中。
这里的问题是,当你初始化tinyMCE时,原始文本区域几乎被掩埋,并且用这种方法无法访问。
tinyMCE网站提供了有关如何将文本插入tinyMCE字段的文档,但这些仅在页面上有单个tinyMCE元素或您自己手动插入字段时才有效。
// Sets the HTML contents of the activeEditor editor
tinyMCE.activeEditor.setContent('<span>some</span> html');
// Sets the raw contents of the activeEditor editor
tinyMCE.activeEditor.setContent('<span>some</span> html', {format : 'raw'});
// Sets the content of a specific editor (my_editor in this example)
tinyMCE.get('my_editor').setContent(data);
// Sets the bbcode contents of the activeEditor editor if the bbcode plugin was added
tinyMCE.activeEditor.setContent('[b]some[/b] html', {format : 'bbcode'});
有没有办法将这些转换为我可以使用的东西?或者我是否可以使用其他方法将信息插入文本区域?
提前致谢!
答案 0 :(得分:0)
是的,当编辑器初始化时,tinymce源元素变得不可访问。这是必要的,因为tinymce创建了一个新的contenteditable iframe,然后用于编辑文本。编辑文本在几个事件中写回了前文本区域。
您要求使用jQuery方式来访问tinymce编辑器内容。这个有可能。
以下示例显示如何访问编辑器主体元素,查找具有类.js-description
的html元素并重置其值。
var editor = tinymce.activeEditor || tinymce.get('my_editor_id') || tinymce.editors[0];
$(editor.getBody()).find(".js-description").val('new_val');