jquery – 将富文本粘贴到content-editable div中,只保留粗体和斜体格式

前端之家收集整理的这篇文章主要介绍了jquery – 将富文本粘贴到content-editable div中,只保留粗体和斜体格式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想将一些不同字体,字体大小,字体重量等的丰富文本粘贴到内容可编辑的div中,并且只保留粗体和斜体。有什么想法呢?

以下代码将富文本转换为纯文本粘贴到content-editable div中。

$('[contenteditable]').on('paste',function(e) {
    e.preventDefault();
    var text = (e.originalEvent || e).clipboardData.getData('text/plain') || prompt('Paste something..');
    document.execCommand('insertText',false,text);
});

我试过看看上面的代码中的文本变量,但它似乎没有被格式化。

解决方法

这是一个工作演示: http://jsfiddle.net/SJR3H/7/
$(document).ready(function(){

        $('[contenteditable]').on('paste',function(e) {

            e.preventDefault();

            var text = (e.originalEvent || e).clipboardData.getData('text/html') || prompt('Paste something..');
            var $result = $('<div></div>').append($(text));

            $(this).html($result.html());

            // replace all styles except bold and italic
            $.each($(this).find("*"),function(idx,val) {

                var $item = $(val);
                if ($item.length > 0){
                   var saveStyle = {
                        'font-weight': $item.css('font-weight'),'font-style': $item.css('font-style')
                    };
                    $item.removeAttr('style')
                         .removeClass()
                         .css(saveStyle); 
                }
            });

            // remove unnecesary tags (if paste from word)
            $(this).children('style').remove();
            $(this).children('Meta').remove()
            $(this).children('link').remove();

        });

    });

后来编辑:http://jsfiddle.net/SJR3H/8/

添加了以下行:

$item.replaceWith(function(){
       return $("<span />",{html: $(this).html()});
});

它实际上用跨度代替了所有的html标签。在那里,您可以选择将一些标签放在原始文本(h1,p等)中,根据需要对其进行样式化。

猜你在找的jQuery相关文章