2012-09-20 17 views
8

Quando una specifica area di testo viene copiata, voglio che sia nascosta DOPO essere copiata. Ho il seguente codice:Su copia hide textarea (JQuery)

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

Come vedete questo sarà nasconderlo allora il browser tenterà di copiare un campo che è nascosto in modo che copierà nulla negli appunti. Riesci a pensare a un modo in cui posso gestire questo? Qualsiasi aiuto è apprezzato.

risposta

5

È opportuno posticipare di alcuni millisecondi il hide().

Demo: http://jsfiddle.net/techfoobar/uxmRs/

Codice:

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

+1 - potrebbe essere utile utilizzare un riferimento a 'this' all'interno della funzione nel caso in cui ci sono più' textareas' sulla pagina (so che l'OP ha usato un id nel suo selettore e non si applica lì ma può aiutare gli altri che si imbattono in questo esempio) – billyonecan

+1

Sì, è vero. Inoltre, salvare il riferimento significherebbe anche che jQuery non deve attraversare il DOM per trovare gli elementi all'interno della funzione setTimeout. – techfoobar

+0

Perfetto. Grazie per il tuo aiuto e una rapida risposta! Lo apprezzo molto –