gpt4 book ai didi

jQuery Summernote 自定义按钮功能

转载 作者:行者123 更新时间:2023-12-03 22:15:16 25 4
gpt4 key购买 nike

我这里有一个 jsFiddle -> http://jsfiddle.net/cm910t89/2/

我在Summernote WYSIWYG Editor中创建了一个自定义按钮我似乎无法让我的功能在插件内正常工作。

我希望用户能够突出显示(或使用光标选择)编辑器中的任何文本,然后单击我的自定义按钮,该按钮将使用特殊的 span 标记将所选文本包装在 span 标记中'snote' 类。

现在,我可以使用该类将所选内容包装在 span 标记中,但编辑器中的所有格式都会被删除。

任何人都可以帮忙,使选定的文本包含在 span 标记中并且格式保持不变吗?

jsFiddle -> http://jsfiddle.net/cm910t89/2/

$(document).ready(function() {
var editor = $('#summernote');
editor.summernote({
height: ($(window).height() - 250),
focus: false,
toolbar: [
['style', ['bold', 'italic', 'underline', 'clear']],
['font', ['strikethrough']],
['fontsize', ['fontsize']],
['para', ['ul', 'ol', 'paragraph']],
['height', ['height']],
['view', ['fullscreen', 'codeview']],
],
oninit: function() {
// Add "open" - "save" buttons
var noteBtn = '<button id="makeSnote" type="button" class="btn btn-default btn-sm btn-small" title="Identify a music note" data-event="something" tabindex="-1"><i class="fa fa-music"></i></button>';
var fileGroup = '<div class="note-file btn-group">' + noteBtn + '</div>';
$(fileGroup).appendTo($('.note-toolbar'));
// Button tooltips
$('#makeSnote').tooltip({container: 'body', placement: 'bottom'});
// Button events
$('#makeSnote').click(function(event) {
var highlight = window.getSelection(),
spn = '<span class="snote" style="color:blue;">' + highlight + '</span>',
text = $('.note-editable').children('p').text(),
range = highlight.getRangeAt(0),
startText = text.substring(0, range.startOffset),
endText = text.substring(range.endOffset, text.length);

$('.note-editable').html(startText + spn + endText);
});
},

});

最佳答案

由于 $('.note-editable') 是一个文本区域,因此当您调用 .text() 时,它将仅获取该元素的文本,而丢失所有内容Summernote 插件添加的 html 可以很好地为您显示。

您不需要所有代码来替换突出显示的文本。事实上,您所需要的只是您创建的 range 对象!使用他,您可以调用 .deleteContents() 清除所选范围,然后调用 .insertNode(node) 插入动态创建的跨度,其中包含以下文本:

$('#makeSnote').click(function(event) {
var highlight = window.getSelection(),
spn = document.createElement('span'),
range = highlight.getRangeAt(0)

spn.innerHTML = highlight;
spn.className = 'snote';
spn.style.color = 'blue';

range.deleteContents();
range.insertNode(spn);
});

正在工作 fiddle .

关于jQuery Summernote 自定义按钮功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29632105/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com