在TinyMCE初始化之后用javascript设置textarea值

时间:2012-08-03 09:52:51

标签: javascript html tinymce textarea

我有一个textarea,我在那个textarea上使用tinyMCE。

我实际上在做的是当页面打开时,我用一些文本填充textarea,之后我正在初始化tinyMCE。

问题是当我尝试在tinyMCE初始化之后更改textarea的值时,没有任何反应。

这是一个例子。

  1. 创建textarea:

    <textarea style="width: 95%;" name="title"  id="title"></textarea>
    
  2. 填充textarea:

    $('#title').html("someText");
    
  3. 初始化tinyMCE

    tinyMCE.init({
            // General options
            mode : "specific_textareas",
            theme : "advanced",
            width: "100%",
            plugins : "pagebreak,paste,fullscreen,visualchars",
    
            // Theme options
            theme_advanced_buttons1 : "code,|,bold,italic,underline,|,sub,sup,|,charmap,|,fullscreen,|,bullist,numlist,|,pasteword",
            theme_advanced_buttons2 :"",
            theme_advanced_buttons3 :"",
            theme_advanced_buttons4 :"",
            theme_advanced_toolbar_location : "top",
            theme_advanced_toolbar_align : "left",
            theme_advanced_statusbar_location : "bottom",
            valid_elements : "i,sub,sup",
            invalid_elements : "p, script",
            editor_deselector : "mceOthers"
        });
    
  4. 我想更改textview的内容(但不起作用)

  5. 我尝试使用与初始化tinyMCE

    之前相同的内容
        $('#title').html("someModifiedText"); // does not work
    

    我也尝试删除tinyMCE:

        if(tinyMCE.getInstanceById('title'))
        removeTinyMCE("title");
    

    function removeTinyMCE (dialogName) {
        tinyMCE.execCommand('mceFocus', false, dialogName);
        tinyMCE.execCommand('mceRemoveControl', false, dialogName);
    

    }

    重新使用:

        $('#title').html("someModifiedText"); // does not work
    

    我没有想法......非常感谢你的帮助......

6 个答案:

答案 0 :(得分:32)

问题是,如果您在textarea中输入text或html,则不会看到任何内容。 当tinymce初始化时,你的textarea会被隐藏。您所看到的是内容可编辑的iframe,用于编辑和设置内容样式。有几个事件会导致tinymce将其内容写入编辑器的html源元素(在您的情况下是您的textarea)。

如果要设置编辑器的内容(可见),则需要调用类似

的内容
tinymce.get('title').setContent('<p>This is my new content!</p>');

您也可以使用以下

直接访问dom元素
tinymce.get('title').getBody().innerHTML = '<p>This is my new content!</p>';

或使用jQuery

$(tinymce.get('title').getBody()).html('<p>This is my new content!</p>');

答案 1 :(得分:10)

您可以使用tinyMCE.activeEditor.setContent('<span>some</span> html');

Check this Answer

答案 2 :(得分:3)

这对我有用

$("#description").val(content);

答案 3 :(得分:0)

<textarea id="content" name="content">{{html_entity_decode($yourstringdata)}}</textarea>

这对我来说是工作,请解码您的html数据并将其放在开始和结束textarea标签之间。

答案 4 :(得分:0)

我有一个同样的问题,可以通过确保setContent在文档准备好之后完成来完成,所以首先;

script(type="text/javascript").
  tinymce.init({
    selector: '#title',
    height: 350,
    menubar: false
  });

然后

script(type='text/javascript').
  $(document).ready(function(){
    tinymce.get('title').setContent('<span>someText</span> is html');
  })

上面是哈巴狗的代码,但是关键是-如前所述-以便将其加载到准备就绪的文档中。

答案 5 :(得分:-1)

它对我有用。只需将它放在你的html代码中,而不是将其放入tinymce

    <textarea> html CONTENT</textarea>