将文本插入重复的tinyMCE元素中

时间:2014-05-06 18:04:54

标签: php jquery laravel tinymce

我已经尝试了一段时间,找到一种使用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'});

有没有办法将这些转换为我可以使用的东西?或者我是否可以使用其他方法将信息插入文本区域?

提前致谢!

1 个答案:

答案 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');