Ir para conteúdo

POWERED BY:

Arquivado

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

mauriciogonzatto

Atribuição dinâmica de evento

Recommended Posts

Meu problema é mais especificamente no navegador FireFox (ele sempre implica

comigo :P)

 

Preciso remover a função do botão enter (KeyCode = 13) para o Tab (KeyCode =

9).

 

Tenho a seguinte solução que funciona perfeitamente no IE:

 

Form html

------------

<form id="FormDoXola">

Box 1:<input type="text" name="box1" id="box1"><br>

Box 2:<input type="text" name="box2" id="box2"><br>

Box 3:<input type="text" name="box3" id="box3"><br>

Box 4:<input type="text" name="box4" id="box4"><br>

<input type="submit" name="done" value="Submit">

</form>

 

 

Ao carregar o body de meu documento eu faço uma chamada à função que vai

percorrer todos os componentes do form e adicionar à função:

 

<BODY onload="varreElementos(document.getElementById('FormDoXola'));">

 

 

O Código JavaScrpt:

 

function varreElementos(el)

{

if(el.hasChildNodes())

{

for(i=0;i<el.childNodes.length;i++)

{

if(el.childNodes.hasChildNodes())

{

varreElementos(el.childNodes);

}

else

{

setaFuncaoElementos(el.childNodes);

}

}

}

else

{

setaFuncaoElementos(el);

}

}

 

 

 

function setaFuncaoElementos(el)

{

if(el.nodeType == 1 && el.id != '')

{

if (window.addEventListener) // FireFox

{

el.addEventListener('onkeypress', handleEnter, true);

}

else

if (window.attachEvent) // IE

{

el.attachEvent('onkeypress', handleEnter);

}

}

}

 

 

function handleEnter(e)

{

var keyCode = event.keyCode ? event.keyCode : event.which ? event.which

: event.charCode;

var field = event.srcElement;

if (keyCode == 13)

{

var i;

for (i = 0; i < field.form.elements.length; i++)

{

if (field.id == field.form.elements.id)

break;

}

i = (i + 1) % field.form.elements.length;

field.form.elements.focus();

return false;

}

else

return true;

}

 

 

 

Como já disse no IE está funcionando corretamente. Já pesquisei se poderia

ser a forma de atribuição do evento, mas esta não ocorre erro, o que ocorre é

que simplesmente ao ocorrer o 'onkeypress' no FF nenhum evento é disparado,

diferente do IE que dispara certo!

 

Obrigado!!

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala ferreira, Agora disparou o evento, porém o FF não reconheçe mais nenhuma propriedade do objeto event:event.keyCode ? event.keyCode : event.which ? event.whichqualquer uma delas é irreconhecível... <_< tem alguma idéia doq possa ser?obrigado pela ajuda!![]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Arrumei!

 

function handleEnter(e) {	   	var field;					 	if(window.navigator.appVersion.indexOf("MSIE") != -1){		field = e.srcElement;	}else{		field = e.target;	}			if (e.keyCode == 13) 	{		var i;	   		for (i = 0; i < field.form.elements.length; i++)		{						if (field.id == field.form.elements[i].id)				break;		}		i = (i + 1) % field.form.elements.length;		field.form.elements[i].focus(); 		if (e && e.preventDefault) {						e.preventDefault();		}							   		return false;	 	}	else	{				return true;	}}

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.