如何修改粘贴数据? jQuery的

时间:2017-04-16 15:11:28

标签: javascript jquery copy-paste

我按照这个问题JavaScript get clipboard data on paste event (Cross browser)从剪贴板中获取粘贴的数据,但我使用的是jquery。现在我得到了数据,我删除了所有的html标签。但我不知道如何粘贴它。 elementcontenteditable div

element.on('paste', function (e) {
  var clipboardData, pastedData;
  e.preventDefault();
  // Get pasted data via clipboard API
  clipboardData = e.clipboardData || window.clipboardData || e.originalEvent.clipboardData;
  pastedData = clipboardData.getData('Text').replace(/<[^>]*>/g, "");
  // How to paste pasteddata now?
  console.log(pastedData);
});

3 个答案:

答案 0 :(得分:3)

可能更容易让粘贴继续并在之后立即更新元素。还取决于用例,因为光标位置可能会以这种方式丢失

&#13;
&#13;
$(':input').on('paste', function (e) {
    var $el = $(this); 
    setTimeout(function () {
        $el.val(function(){
            return this.value.replace(/foo/g, "bar"); 
        })
    });
})
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>foo was here</p>
<textarea></textarea>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

我找到了答案,我将分享它。为了从html标签清理剪贴板,你应该粘贴它:

             element.on('paste', function (e) {
                    e.preventDefault();
                    var text;
                    var clp = (e.originalEvent || e).clipboardData;
                    if (clp === undefined || clp === null) {
                        text = window.clipboardData.getData("text") || "";
                        if (text !== "") {
                            text = text.replace(/<[^>]*>/g, "");
                            if (window.getSelection) {
                                var newNode = document.createElement("span");
                                newNode.innerHTML = text;
                                window.getSelection().getRangeAt(0).insertNode(newNode);
                            } else {
                                document.selection.createRange().pasteHTML(text);
                            }
                        }
                    } else {
                        text = clp.getData('text/plain') || "";
                        if (text !== "") {
                            text = text.replace(/<[^>]*>/g, "");
                            document.execCommand('insertText', false, text);
                        }
                    }
                });

信用: l2aelba

答案 2 :(得分:-3)

嗯,这取决于您要粘贴的元素。您可以使用jQuery或本机Javascript来实现!

也许喜欢 $(targetNode).append(pastedData) 要么 document.getElementById('targetNode').innerText = pastedData