Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Adelar Tiemann jr

Copiar par o ctl+c com js

Recommended Posts

Aew

 

Pessoal estou com um problema, eu preciso de uma função JS que pegue o conteúdo de um campo e deixa na área de transferência vulgo ctrl+c

 

Vlw ae

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom já que não me dizem uma resposta vou supor que não entenderão a minha duvida :D

 

É o seguinte: tenho um campo que o conteúdo dele é o CPF/CNPJ e ao lado tenho um botão que deve pegar este CPF/CNPJ retirar os ".","-" e "/" e colocar apenas os números na área de transferência para assim o usuário poder colar onde quiser

 

vlw aew

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seguinte,

 

Tem como fazer sim. :)

 

você tem q colocar 3 vaiáveis globais no seu programa uma referente a tecla control , uma referente a tecla C e uma outra variável que vai ser referente ao conteúdo copiado.

 

No evento "onkeypress" do seu campo, você chama uma função que verifica qual tecla foi apertada, caso seja o Control você alimenta a variável global com true, e se for o C, você alimenta a variável global reference a C com true.

 

Nessa mesma função , você verifica se essas 2 variáveis estão com o valor true, se as 2 forem true, significa q as 2 estão pressionadas. então você copia o contepudo do campo para a variável global referente ao conteúdo.

 

No evento "onkeyup" você zera seta as variáveis globais de Control e C como "false", pq no onkeyup significa que o usuário soltou as teclas.

 

Não sei se fui muito claro, mas essa é a logica da coisa de como eu faria, caso naum tenha entendido alguma coisa, posta aee q a gente debate e você tenta resolver seu problema.

 

Absssss

Compartilhar este post


Link para o post
Compartilhar em outros sites

Humm certo, entendi o que você quis dizer. Porem este não é o meu problema, pois quando ele copia do campo eu consigo saber pelo evento se não me falha a memória.

 

O que eu realmente preciso é que quando ele clique no botão ao lado do input ele faça o trabalho do ctrl+c.

 

Tentando simplificar: clicar no botão deve ser igual ao selecionar o campo e pressionar ctrl+c entretando eu preciso remover a formatação neste processo

 

Mas valeu a dica :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Po

então é mais simples ainda.

 

Tipo, o seu campo possui um ID correto ?

entaum quando você clicar nesse botão , coloque no evento "onclick" uma função que faz mais ou menos o seguinte

 

//esse parametro ID é o id do campo que você quer pegar o valor
function pegaValor (id)
{
  var valor = document.getElementById(id).value;
//removendo . - e /
  var valorPuro = valor.replace(".","");
  valorPuro = valor.replace("/","");
  valorPuro = valor.replace("-","");
  return valorPuro;
}

Testa isso aee e ve se você quer.

 

 

absss

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa

Sim dessa forma você vai apenas retirar a formatação, isso já esta implementado.

 

Porem como que eu vou colocar o conteúdo na área de transferência? essa é a grande duvida

 

vlw aew

Compartilhar este post


Link para o post
Compartilhar em outros sites

É cara... infelizmente não sei como se faz crossbrowser. Mas para o IE pode ser assim:

 

<html>
<head>
<script>
function ClipBoard() {
	var a = document.getElementById('testeA');
	var b = document.getElementById('testeB');
	
	a.innerText = b.innerText;
	var Copied = a.createTextRange();
	Copied.execCommand("Copy");
}
</script>
</head>
<body>

<textarea id="testeA" style="display:none;"></textarea>
<SPAN ID="testeB">opa!!! Copia!!</SPAN>
<a href="#" onclick="ClipBoard();">Click Me</a>

</body>
</html>

Veja se ajuda.

 

Abraços!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aew

 

essa parte

 

a.createTextRange()

O que ela faz mais exatamente?? Pois eu não quero que o usuário veja quando é copiado. isso funciona se eu fizer dentro de um hidden??

 

Bom agora tenho que ir a cata disso para o FF :D

 

vlw aew

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aee q está,

 

você não tem como colocar na área de transferência, essa parte eu desconheço mesmo.

 

Por isso o lance de ter uma variável global para todo seu programa, pq quando você pegar esse valor , você pode alimentar essa variável global. Ela se torna no caso uma "area de transferencia" para seu programa. portanto só funciona dentro de sua pagina, depende de como você a manipula.

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas o exemplo que eu mandei copia para a área de transferência. A partir dalí você consegue colar em qualquer lugar. Faça um teste! Rode meu exemplo, abra o NOTEPAD e lasca um CTRL+V nele...

 

ABRAX!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa

 

Sim o exemplo que você passo esta ok porem apenas para o IE ai estou procurando para o FF e uma outra coisa que eu não sei é se para um campo hidden funciona igual?

 

Vlw ae

Compartilhar este post


Link para o post
Compartilhar em outros sites

Funciona sim. No meu exemplo eu utilizei uma TEXTAREA. É só você adaptar para um HIDDEN! Sem crise!

 

Vou fuçar aqui pra tentar fazer funfar no FF e te aviso.

 

ABrax!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Putzzzzz,

 

Vivendo e aprendendo, eu faria do modo mais complicado e naum faria do modo certo.

 

Fui dar uma olhada na função que nosso amigo postou e vi q tinha coisas q eu naum conhecia, show de bolaa :D, mais uma do berkowitz que vai pro meu hall da fama de códigos úteis.

 

Se liga, essa função tem problemas com o firefox, e vi q tem solução pro problema..

 

http://forum.imasters.com.br/index.php?showforum=6

 

deem uma olhada nesse tópico, aqui no imasters mesmo.

 

 

absss

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pow Carutcho... valew mesmo! rs...

 

Então galera... dei uma pesquisada e parece que eu estava certo. O execCommand é algo restrito do IE. Nos outros browsers até funciona, mas por padrão o acesso à área de transferência via SCRIPT é bloqueada. Você precisaria solicitar ao usuário para que ele liberasse essa opção (isso é chato).

Eu achei esse artigo mostrando como faz: http://www.febooti.com/support/website-hel...-clipboard.html

 

Espero ter ajudado em algo.

 

Abrax!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Rsss com certeza ajudou :D

 

Vo salvar o codigo e esses links q é bem útil..

 

 

abssss

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aew

Bom para o IEca esta OK agora o FF que me mata :D

 

Dei uma olhada nesse artigo que o berkowitz passo, porem...(maldito porem) pelo o que eu entendi o dono do PC que deve alterar o seu navegador.

 

E no meu caso eu tenho que por isso no ERP da empresa assim quem precisará alterar é o usuário e sabe como que eles são... ai eu precisava de algo que fizesse o trabalho do usuário ou então que desse um jeito...

 

Eu me enrolei altos então vai a explicação: eu não posso deixar para o usuário do sistema alterar as configurações do seu navegador não vai dar nenhum pouco certo. Ai eu preciso que meu código faça isso.

 

Espero que tenha dado para entender

 

Vlw aew

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então cara! Como eu disse não tem como mesmo. A única forma é o usuário habilitar.

É assim... você fazendo o script daquela forma vai aparecer um alerta para o usuário pedindo para PERMITIR o acesso. Ele clicando no botão PERMITIR tudo funcionará.... não precisa fazer configuração nenhuma, entendeu?

 

Se você não quiser fazer isso só terá uma forma (penso eu): cria uma verificação. Se o usuário acessar de um browser que não suporte o execCommand, então você da um comando para dar o foco no campo e selecionar o conteúdo, e o usuário terá que copiar por conta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.