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

jQuery I can't remove div tags when I paste text

我的代码删除了除 .

之外的所有 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/

您可以使用 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;
    }
});

您只需要使用 text() 包装 HTML 和 return 纯文本。

$('[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().