2014-07-02 10 views
5

Ho ottenuto il seguente codice da Intercept paste event in Javascript.Intercept Incolla dati in JavaScript

Ho bisogno di prenderlo prima che venga incollato, altrimenti perdo i "\ n" caratteri che ho bisogno di salvare.

Funziona perfettamente per intercettare i dati degli appunti per un elemento con un ID. Ho bisogno che funzioni su tutti gli elementi di input. Quando provo ad usare jQuery per ottenere gli elementi di input nulla.

Qualsiasi aiuto è apprezzato.

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

non c'è jquery in là. è semplicemente javascript ... –

+0

corretto. Sono disposto a farlo in entrambi i modi. – wibberding

+1

quindi mostra il tuo codice jquery. non siamo qui per sborsare una soluzione per te. –

risposta

9

Basta aggiungere un listener di eventi paste al documento.

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

Cosa nmaier detto, ma è anche necessario per verificare l'evento originale.

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; 
    } 
}); 

Inoltre, dovresti probabilmente aggiungere l'ascoltatore di eventi solo all'elemento, invece dell'intero documento.