jquery - 将富文本粘贴到内容可编辑的 div 中,仅保留粗体和斜体格式

标签 jquery html

我想将一些具有不同字体、字体大小、字体粗细等的富文本粘贴到内容可编辑的 div 中,并且只保留粗体和斜体。知道如何解决这个问题吗?

以下代码在粘贴到内容可编辑的 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);
});

我已经尝试查看上面代码中的 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()});
});

它实际上用 span 替换了所有 html 标签。在那里,您可以选择让一些标签与原始文本中的标签相同(h1p 等),并根据需要设置样式。

关于jquery - 将富文本粘贴到内容可编辑的 div 中,仅保留粗体和斜体格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21257688/

相关文章:

javascript - HTML/PHP 删除 html 输入的一部分

jquery - 调整浏览器大小时的菜单按钮

jQuery改变输入搜索框的宽度

html - 垂直对齐不起作用

html - 固定导航栏在从导航跳转到页面的一部分时隐藏内容

javascript - 单击提交按钮获取输入框值

javascript - jQuery 函数的纯 JS 版本

jquery - 通过点击导航来切换隐藏的div?

Javascript - 为什么这段 Javascript 代码在 JSFiddle 和 JSBin 中有效,但在任何浏览器中都无效?

html - GeoLocation HTML5 返回 getCurrentLocation 范围之外的 position.coords