Ir para conteúdo

Arquivado

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

daniel.pod

Tecla delete muda classe

Recommended Posts

Fala pessoal, é o seguinte:

 

Tenho essa tabela:

 

<table id="tabela" width="583" border="0" cellpadding="0" cellspacing="0" class="font1">  <tr id="1" class="marcalinha"> 	<td width="83" height="17" align="center">06/03/2007</td>	<td width="84" align="center">08:50</td>  </tr>  <tr bgcolor="#CCCCCC"> 	<td colspan="5" align="center"><img src="../../../imgs/ptransp.gif" width="1" height="1"></td>  </tr>  <tr id="2"> 	<td width="83" height="17" align="center">06/03/2007</td>	<td width="84" align="center">08:50</td>  </tr>  <tr bgcolor="#CCCCCC"> 	<td colspan="5" align="center"><img src="../../../imgs/ptransp.gif" width="1" height="1"></td>  </tr>  <tr id="3" class="marcalinha"> 	<td width="83" height="17" align="center">06/03/2007</td>	<td width="84" align="center">08:50</td>  </tr>  <tr bgcolor="#CCCCCC"> 	<td colspan="5" align="center"><img src="../../../imgs/ptransp.gif" width="1" height="1"></td>  </tr>  <tr id="4"> 	<td width="83" height="17" align="center">06/03/2007</td>	<td width="84" align="center">08:50</td>  </tr>  <tr bgcolor="#CCCCCC"> 	<td colspan="5" align="center"><img src="../../../imgs/ptransp.gif" width="1" height="1"></td>  </tr></table>
Gostaria que ao pressionar a tecla "delete" do teclado, acionasse uma função javascript que varresse a tabela buscando todas as linhas que tiverem com a classe "marcalinha" e substituissem pela classe "dellinha".

 

Ja procurei no forum mais nao achei nada parecido com isso.

 

Alguem ajuda eu :rolleyes: valew pessoal...

Compartilhar este post


Link para o post
Compartilhar em outros sites

função é essa:

<script>function muda_class(tecla){	for(i=1;i<=5;i++)	{		var elemento = document.getElementById(i)		if(tecla == "46")		{			elemento.className = "dellinha";		}	}}</script>
no body:

<body onKeyPress="muda_class(event.keyCode)">

Compartilhar este post


Link para o post
Compartilhar em outros sites

E lembre-se se quiser que esse código funcione no FF, vai ter que adicionar "event.witch" e depois tratar na função para descobrir se é IE ou FF, ok?

Compartilhar este post


Link para o post
Compartilhar em outros sites

bem lembrado PKTIAGO, erro meu. Muda para:

<script>function muda_class(captura){	tecla = captura.keyCode;	if(tecla == 0)	{		tecla = captura.charCode;	}	for(i=1;i<=5;i++)	{		var elemento = document.getElementById(i)		if(tecla == "46")		{			elemento.className = "dellinha";		}	}}</script>
no body:

<body onKeyPress="muda_class(event)">
desculpa eu. http://forum.imasters.com.br/public/style_emoticons/default/blush.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certíssimo Cayo, você não tem que pedir desculpa, o certo era para ser um código único, mas as incopatibilidades fazem nós desenvolvedores "pastarem" para fazer coisas teóricamente fáceis...Acho que o IE 7 veio para resolver isso, mas quantos milhões de pessoas usam versões anteriores???Então pelo menos mais uns 5 anos temos que continuar assim! que beleza!hehehe Ri para não chorar!hehehe....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito bom, obrigado a Pktiago e Megadeth, funciono perfeitamente, o unico detalhe é que na tecla delete e nas que ficam perto dela(home, pageup, end e etc) não roda, nao funciona o "onKeyPres" pra essas teclas. Tem como resolver isso?colocar na tecla delete?

 

Muito obrigado mesmo http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tava dando problema no primeiro. Mas o meu segundo post está funcionando direitinho, no delete mesmo.Qual você tá usando?

Compartilhar este post


Link para o post
Compartilhar em outros sites

To usando o segundo, ai fiz assim pra testa:

 

 

function muda_class(captura){    alert("teste");}

onKeyPress="muda_class(event)"

ele funciona só pras letras, pra shift, del, ctrl, alt e etc ele nao roda. Meu ie é 6, sera q é só a apartir do 7?Detalhe que esse codigo esta dentra de uma pagina que fica dentro de um iframe na tela.

 

Valew http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Assim num vai nunca:

function muda_class(captura){alert("teste");}
a variavel captura precisa receber:

.keyCode - para internet explore

.charCode - para firefox

 

Quer testar? faz assim:

function muda_class(captura){	tecla = captura.keyCode;	if(tecla == 0)	{		tecla = captura.charCode;	}	alert(tecla)}
ele vai mostrar o código da letra

Compartilhar este post


Link para o post
Compartilhar em outros sites

você queria testar, certo? agora esse é para execultar a mudança de classe:

function muda_class(captura){	tecla = captura.keyCode;	if(tecla == 0)	{		tecla = captura.charCode;	}	for(i=1;i<=5;i++)	{		var elemento = document.getElementById(i)		if(tecla == "46")		{			elemento.className = "dellinha";		}	}}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Masi entao, eu rodei já com esse codigo, funciono nao teclas normais mais no delete nao, nas outras teclas ele chama a função. Só no delete que nao da nem sinal de vida.

Compartilhar este post


Link para o post
Compartilhar em outros sites

seu teclado pode ser diferente do meu. executa a função que mostra o numero da tecla, depois executa essa ultima substituindo aqui:

if(tecla == "46" )
pelo numero da tecla que apareceu pra você na função anterior. E aproveita verifica o nome das classes que eu coloquei, podem estar diferentes das suas:

elemento.className = "dellinha";
use um pouco a cabeça, não fiz o script exato para sua máquina, você que tem que modificar segundo as suas necessidades.OK!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Megadeth, a primeira coisa q eu fiz quando peguei seu codigo foi modificar para funcionar pra mim, nao so tão tapado assim :rolleyes: , problema q na tecla delete nao executa nada, nao chama a função, então não consigo nem ver o codigo da tecla, mesmo se eu soubesse o codigo da tecla e colocasse no if nao ia resolver pq a tecla nao chama a função.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muda a chamada da função de :

onKeyPress="muda_class(event)"
para

onKeyUp="muda_class(event)"
agora vai.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mais um problema, no for da função "muda_class" esta fixo a quantidade de loops que vão ter certo. Só q a quantidade de loops ali vai depende da quantidade de linha q minha tabela vai te, já que eu carrego essa tabela com informações do banco de dados. Tem como sabe na entrada do for, quantas linha minha tabela tem?

 

Valew pessoal http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ao inves de colocar um numero determinado, crie uma variavel que ira receber o numero de td existentes no documento.Assim:

tds = document.getElementsByTagName('td').length

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só uma pequena correção, nosso amigo Daniel quer LINHAS, e você passou COLUNAS Cayo, então o certo seria:

 

var trs = document.getElementsByTagName('tr').length

de resto tudo certo!

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.