2012-09-20 29 views
8

Cuando se copia un área de texto específica, quiero que se oculte DESPUÉS de haber sido copiado. Tengo el siguiente código:En copy hide textarea (JQuery)

$('#textarea20').on('copy', function() {  
    $('#textarea20').hide(); 
}); 

Como se ve lo ocultará a continuación, el navegador va a tratar de copiar un campo que está oculto por lo que copiar nada en el portapapeles. ¿Puedes pensar en alguna forma en que pueda manejar esto? Cualquier ayuda es apreciada.

Respuesta

5

Aplazar el hide() por algunos milisegundos debería funcionar.

demostración: http://jsfiddle.net/techfoobar/uxmRs/

Código:

$('textarea').on('copy', function() {  
    setTimeout(function() { 
     $('textarea').hide(); 
    }, 10); 
}); 
+1

+1 - podría valer la pena utilizar una referencia a 'this' dentro de la función por si acaso existen múltiples' textareas' en el página (Sé que el OP utilizó una identificación en su selector y no se aplica allí, pero puede ayudar a otras personas que encuentren este ejemplo) – billyonecan

+1

Sí, cierto. Además, guardar la referencia también significaría que jQuery no tiene que atravesar el DOM para encontrar los elementos dentro de la función setTimeout. – techfoobar

+0

Perfecto. Gracias por su ayuda y respuesta rápida! Realmente lo aprecio –