Ir para conteúdo

POWERED BY:

Arquivado

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

danielnsilva

Problemas com evento onKeyUp

Recommended Posts

Amigos,

 

Estou trabalhando numa aplicação que numa determinada página, carrego via php uma tabela HTML com registros de um BD. Numa célula dessa tabela eu coloco um campo INPUT/TEXT da seguinte forma:

 

<input name="economias" type="text" id="economias" style="width:70px" value="" onkeyup="java script:atualizaEconomias();" />
Isto é, quando for pressionada um tecla dentro deste campo seria chamada a função atualizaEconomias(), que nada mais é do que uma função que busca por alguns campos e soma os valores deles. Está página possui ainda uma fucionalidade que permite ser inseridas mais linhas na tabela semelhantes as anteriores, com o mesmo campo ao qual me referi acima. Quando faço isso após inserir a linha, coloca o campo na célula correspondente da seguinte forma:

 

linhaInserida.cells[x].innerHTML = '<input name=\"economias\" type=\"text\" id=\"economias\" style=\"width:70px\" onkeyup=\"java script:atualizaEconomias();\" />';

Onde "linhaInserida" é o objeto que faz referência a linha que foi inserida na tabela.

 

Bem, o problema que está acotecendo é que o evento onkeyup só está funcionando com as novas linhas inseridas, isto é, nas linhas que são carregadas direto do BD, o evento não funciona! Não há qualquer problema com a função, pois se colocar um simples alert() também não funciona. Fazendo alguns teste observei que o evento onchange funciona perfeitamente nas duas situações, mas não é o que eu gostaria, pois a função só seria chamada quando o campo perdesse o foco. Já tentei onkeydown e onkeypress e tamém não funcionou.

 

Não sei mas o que tentar, alguém poderia ajudar?

 

[]s

Daniel

Compartilhar este post


Link para o post
Compartilhar em outros sites

poste sua função atualizaEconomias() por favor

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fleury, aqui está a função:

 

function atualizaEconomias() {	categorias = document.getElementsByName('categoria');	economias = document.getElementsByName('economias');	var ecores = 0, ecocom = 0, ecoind = 0, ecopub = 0;	for (i=0; i<($('tblImoveisContrato').rows.length-1); i++) {		switch (categorias[i].value) {			case '34': ecores = parseInt(economias[i].value) + ecores; break;			case '35': ecocom = parseInt(economias[i].value) + ecocom; break;			case '36': ecoind = parseInt(economias[i].value) + ecoind; break;			case '37': ecopub = parseInt(economias[i].value) + ecopub; break;		}	}	$('ecores').value = ecores;	$('ecocom').value = ecocom;	$('ecoind').value = ecoind;	$('ecopub').value = ecopub;}

Mas como disse anteriormente, não acredito que haja problema nessa função, pois se colocar um simples alert() no lugar dessa função também não funciona.

 

[]s

Daniel

Compartilhar este post


Link para o post
Compartilhar em outros sites

O.o

tenta aí:

.... onkeyup=\"atualizaEconomias();\" ...

Se não der, você terá de fazer algo assim:

document.getElementById("economias").onkeyup=atualizaEconomias;

 

Lembrando que da forma atual como seu código está, isso não é possível pois você criou vários campo com o mesmo ID, o que não é permitido.

 

F.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fleury, tentei fazer o seguinte:

 

<input name="economias" type="text" id="economias" style="width:70px" onfocus="java script:setEvent();" />

Coloquei da mesma forma na função que insere uma nova linha na tabela. Ou seja, quando o campo receber o foco chamará a função setEvent():

 

function setEvent() {	economias = document.getElementsByName('economias');	for (i=0; i<economias.length; i++) {		economias[i].onkeyup = atualizaEconomias();	}}

Quando o campo receber o foco, eu atribuo a função atualizaEconomias() ao evento onKeyUp de cada campo. Dessa forma, tanto no IE quanto no FF funciona. Porém, não como deveria, pois a função atualizaEconomias() só é chamada quando o campo perde o foco, não quando é pressionada uma tecla, ou seja, um novo problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pois é Fleury, tô batendo cabeça a uma semana para resolver este problema... Estou considerando outras coisas, por exemplo, utilizo o framework Prototype. Será que alguma função do Portotype pode estar exercendo alguma influência no comportamento destes eventos?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei, me manda o código completo da página pra eu testar aqui.

Compartilhar este post


Link para o post
Compartilhar em outros sites

kra, não é por nada não, mas já perdi tempo demais nesse negócio. Como prazo tá acabando, deixei tudo no evento onchange, que funciona normalmente. Não vai ficar como deveria, mas vai funcionar. Orbigado pela ajuda![]sDaniel

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.