2014-07-02 62 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; 
    } 
}); 

此外,您應該添加事件偵聽器只是爲元素,而不是整個文檔。