2014-07-02 42 views
5

我从Intercept paste event in Javascript得到以下代码。截取JavaScript中的数据粘贴

我需要粘贴它之前,否则我失去了我需要保存的“\ n”字符。

它很好地拦截一个元素的剪贴板数据与一个ID。我需要它来处理所有输入元素。当我尝试使用jQuery来获取输入元素。

任何帮助表示赞赏。

var paster = function() { 
    var myElement = document.getElementByTagName('pasteElement'); 
    myElement.onpaste = function(e) { 
     var pastedText = undefined; 
     if (window.clipboardData && window.clipboardData.getData) { // IE 
      pastedText = window.clipboardData.getData('Text'); 
     } else if (e.clipboardData && e.clipboardData.getData) { 
      pastedText = e.clipboardData.getData('text/plain'); 
     } 
     processExcel(pastedText); // Process and handle text... 
     return false; // Prevent the default handler from running. 
    }; 
} 
+2

那里没有jQuery。这只是纯javascript ... –

+0

正确。我愿意这样做。 – wibberding

+1

所以显示你的jQuery代码。我们不在这里为您解决问题。 –

回答

9

只需在文档中添加一个paste事件侦听器。

document.addEventListener("paste", function (e) { 
    console.log(e.target.id); 
    var pastedText = undefined; 
    if (window.clipboardData && window.clipboardData.getData) { // IE 
     pastedText = window.clipboardData.getData('Text'); 
    } else if (e.clipboardData && e.clipboardData.getData) { 
     pastedText = e.clipboardData.getData('text/plain'); 
    } 
    e.preventDefault(); 
    e.target.value = "You just pasted '" + pastedText + "'"; 
    return false; 
}); 

fiddle

3

nmaier说什么,但你还需要检查原始事件。

document.addEventListener("paste", function (e) { 
    console.log(e.target.id); 
    var pastedText = undefined; 
    if (window.clipboardData && window.clipboardData.getData) { // IE 
     pastedText = window.clipboardData.getData('Text'); 
    } else { 
     var clipboardData = (e.originalEvent || e).clipboardData; 
     if (clipboardData && clipboardData.getData) { 
      pastedText = clipboardData.getData('text/plain'); 
     } 
     e.preventDefault(); 
     e.target.value = "You just pasted '" + pastedText + "'"; 
     return false; 
    } 
}); 

此外,您应该添加事件侦听器只是为元素,而不是整个文档。