2

嗨,在确认选项卡上的向导中,我尝试从 tinymce 编辑器中获取内容。但它不起作用。使用普通的 textareas 它可以正常工作。

普通文本区域示例:

<div class="control-group">
<label class="control-label">MyValue<span class="required">*</span></label>
<div class="controls">
<textarea class="span12 m-wrap" style="max-width:100%;" name="MyValue" rows="7"></textarea>
</div></div>

在确认页面上显示来自 textarea 的文本的代码:

<div class="control-group">
<label class="control-label">MyValue</label>
<div class="controls">
<span class="text display-value" data-display="MyValue"></span>
</div>
</div>

我的 JavaScript 代码:

        var displayConfirm = function() {
            $('.display-value', form).each(function(){
                var input = $('[name="'+$(this).attr("data-display")+'"]', form);
                if (input.is(":text") || input.is("textarea")) {
                    $(this).html(input.val());
                } else if (input.is("select")) {
                    $(this).html(input.find('option:selected').text());
                } else if (input.is(":radio") && input.is(":checked")) {
                    $(this).html(input.attr("data-title"));
                } else if ($(this).attr("data-display") == 'htmlinhalt') {
                    $(this).html($('[name="htmlinhalt"]', form).val());
                } 
            });
        }

但是为什么它不适用于tinymce textarea?我想我必须直接从tinymce而不是textarea获取内容,但是如何?

4

3 回答 3

3

尝试

tinymce.get('your_textarea_id').getContent();
于 2013-07-29T10:23:26.497 回答
0

您可以获取原始内容(带有 html 标签),或仅获取文本(html 条纹)。函数 getContent() 返回的默认格式是原始格式。

<textarea id="MyValue" name="MyValue"></textarea>
<div>
    <a href="javascript:alert(tinymce.EditorManager.get('MyValue').getContent({format : 'raw'}));">[getRawContents]</a>
    <a href="javascript:alert(tinymce.EditorManager.get('MyValue').getContent({format : 'text'}));">[getTextContents]</a>
    <a href="javascript:alert(tinymce.EditorManager.get('MyValue').getContent());">[getContents]</a>
</div>

我使用 MyValue 因为您在问题中使用。如果需要,更改 your_textarea_id。

API 3中有关tinyMCE 3.x 的更多信息API 4 中有关 tinyMCE 4.x 的更多信息

于 2013-08-02T16:15:03.637 回答
0

我遇到了完全相同的问题,以前的答案也对我不起作用。我的问题是我的 textarea 没有 id。在给它一个 id 之后,我可以通过之前的答案轻松获取内容(尽管使用大写的“MCE”):

tinyMCE.get('your_textarea_id').getContent();

因此,您想在 if 语句中添加额外的一行。如果您为 textarea 提供与其名称相同的 id,那么这应该可以工作:

   var displayConfirm = function() {
        $('.display-value', form).each(function(){
            var input = $('[name="'+$(this).attr("data-display")+'"]', form);
            if (input.is(":text")) {
                $(this).html(input.val());
            } else if (input.is("textarea")) {
                $(this).html(tinyMCE.get($(this).attr("data-display")).getContent());
            } else if (input.is("select")) {
                $(this).html(input.find('option:selected').text());
            } else if (input.is(":radio") && input.is(":checked")) {
                $(this).html(input.attr("data-title"));
            } else if ($(this).attr("data-display") == 'htmlinhalt') {
                $(this).html($('[name="htmlinhalt"]', form).val());
            } 
        });
    }
于 2013-07-30T21:20:54.663 回答