2014-07-02 14 views
5

Mam następujący kod z Intercept paste event in Javascript.Przechwycone dane wklejenia w kodzie JavaScript

Muszę go pobrać przed wklejeniem, w przeciwnym razie tracę znaki "\ n", które muszę zapisać.

Świetnie sprawdza się w przechwytywaniu danych schowka dla jednego elementu o identyfikatorze. Potrzebuję go do pracy nad wszystkimi elementami wejściowymi. Kiedy próbuję użyć jQuery, aby uzyskać elementy wejściowe nic.

Każda pomoc jest doceniana.

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

nie ma tam jquery. to po prostu javascript ... –

+0

Prawidłowo. Jestem gotów to zrobić w obie strony. – wibberding

+1

, więc pokaż swój kod jquery. nie jesteśmy tu po to, żeby dla ciebie znaleźć rozwiązanie. –

Odpowiedz

9

Wystarczy dodać detektor zdarzeń paste do dokumentu.

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

Co nmaier powiedział, ale trzeba także sprawdzić oryginalnego wydarzenia.

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

Powinieneś również dodać detektor zdarzeń bezpośrednio do elementu, zamiast do całego dokumentu.

Powiązane problemy