San*_*nya 11 jquery toolbar button summernote
我这里有一个jsFiddle - > http://jsfiddle.net/cm910t89/2/
我在Summernote WYSIWYG编辑器中创建了一个自定义按钮,我似乎无法让我的功能在插件中正常工作.
我希望用户能够突出显示(或选择使用他们的光标)编辑器中的任何文本,然后单击我的自定义按钮,该按钮将选定的文本包装在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);
});
},
});
Run Code Online (Sandbox Code Playgroud)
小智 7
既然$('.note-editable')是textarea,当你调用.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);
});
Run Code Online (Sandbox Code Playgroud)
这是工作小提琴.
| 归档时间: |
|
| 查看次数: |
16350 次 |
| 最近记录: |