SummerNote insertHtml

SummerNote insertHtml

我有一个 'template' 选择器,可以让人们更改当前文本区域的 'text/html'。

所以当他们更改模板时,我需要更新 Summernote HTML。我看到了 (insertText) 的方法,但它不适用于 HTML。

HTML版本有解决方案吗?

我以为有 .code() 解决方案,但似乎不起作用? 我收到一个错误,"Not a function"

如有任何帮助,我们将不胜感激!

$('.dialogMessageArea').summernote({
            height:'230px',
            focus:true,
            toolbar: [
                ['style', ['bold', 'italic', 'underline', 'clear']],
                ['fontsize', ['fontsize']],
                ['para', ['ul', 'ol', 'paragraph']],
                ['table', ['table']],
                ['misc', ['fullscreen','undo','redo']]
            ]
        });

        $(document).on('change', '.messageTemplate', function() {
            var templateId = $(this).selected().attr('value');
            if(templateId) {
                $.ajax({
                    type: "POST",
                    dataType: "json",
                    url: '/cont/templates/GetTemplate',
                    data: {'templateId': templateId},
                    success: function (data) {
                        $('.subjectMessage').val(data.results[0].subject);
                        if(data.results[0].template) {
                            $('.dialogMessageArea').code(data.results[0].template);
                        }
                    },
                    error: function () {
                        alert('We were not able to get your template');
                    }
                });
            }
        });

console.log($('.dialogMessageArea'));
console.log("<b>Welcome</b><h3>hello world</h3>");

这应该确实有效

$('.dialogMessageArea').code('some value you want'); 

注意:

HTML inside code() 函数必须是一个字符串。如果您尝试插入 invalid HTML 内容,我认为它不会起作用。

尝试这样做:

创建一个隐藏的 div,然后在您的 AJAX success 方法中尝试从 AJAX 插入数据,然后使用 jquery 检索它的 text() 函数。

<div style="display:none;" id="hidden_div">


            success: function (data) {
                $('.subjectMessage').val(data.results[0].subject);
                if(data.results[0].template) {
                    $('#hidden_div').html(data.results[0].template);
                    $('.dialogMessageArea').code($('#hidden_div').text());
                }
            },

根据 api (https://summernote.org/getting-started/#get--set-code),

要更改所见即所得的值,您应该使用 summernote 函数,其中 'code' 字符串作为第一个参数,您的内容作为第二个参数

像这样:

$('.dialogMessageArea').summernote('code', data.results[0].template);

如果您不想替换笔记中的所有内容,可以使用 execCommand WebAPI 中的 insertHTML 命令。

由于summernote是基于execCommand WebAPI的,我们可以直接使用它的资源。 因此,向 summernote 添加 HTML 内容的最简单方法是使用 insertHtml 参数,如下所示:

document.execCommand('insertHtml', null, '<p>My text <span style="color:red;">here</span></p>');
.summernote('pasteHTML', '<b>inserted html</b> ');

这最适合我

var html = '<h2>Hello World!!</h2>'; $('#divID').summernote('code', html);