jQuery,粘贴文本时无法删除div标签

时间:2019-09-20 04:14:28

标签: jquery clipboard paste

我的代码删除了所有HTML标签。

我需要粘贴纯文本。

我的HTM,我在其中粘贴内容:

<p contenteditable="true">A high altitude hike which offers incredible views of Aconcagua (6958m) and Tupungato (6427m) in Argentina.</p>

我的jQuery代码:

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

                var text = '';

                if (e.clipboardData || e.originalEvent.clipboardData) {
                    text = (e.originalEvent || e).clipboardData.getData('text/plain');
                } else if (window.clipboardData) {
                    text = window.clipboardData.getData('Text');
                }


                if (document.queryCommandSupported('insertText')) {
                    document.execCommand('insertText', false, text);
                } else {
                    document.execCommand('paste', false, text);
                }
            });

我的jsFiddle:

https://jsfiddle.net/ovnx27pg/

2 个答案:

答案 0 :(得分:1)

您可以使用text.replace(/<[^>]*>?/gm, '');

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

    e.preventDefault();

    var text = '';

    if (e.clipboardData || e.originalEvent.clipboardData) {
        text = (e.originalEvent || e).clipboardData.getData('text/plain');
    } else if (window.clipboardData) {
        text = window.clipboardData.getData('Text');
    }
    text = text.replace(/<[^>]*>?/gm, '');

    if (document.queryCommandSupported('insertText')) {
        document.execCommand('insertText', false, text);
    } else {
        document.execCommand('paste', false, text);
    }
    $(this).html($(this).html().replace(/<div>/gi,'<br>').replace(/<\/div>/gi,''));
});

$('[contenteditable]').keydown(function(e) {
    if (e.keyCode === 13) {
         document.execCommand('insertHTML', false, '<br><br>');
      return false;
    }
});

答案 1 :(得分:1)

您只需要使用text()来包装HTML并从中返回纯文本即可。

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

    var text = '';

    if (e.clipboardData || e.originalEvent.clipboardData) {
        text = (e.originalEvent || e).clipboardData.getData('text/plain');
    } else if (window.clipboardData) {
        text = window.clipboardData.getData('Text');
    }
    if (text) {
        text = $(text).text().trim();
    }

    if (document.queryCommandSupported('insertText')) {
        document.execCommand('insertText', false, text);
     } else {
        document.execCommand('paste', false, text);
     }
});

jsfiddle()