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);
我有一个 '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);