Ir para conteúdo

POWERED BY:

Arquivado

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

Thiago_ASP

simulação do evento tab

Recommended Posts

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

 

tenho um pequeno problema...

tenho uma página com vários combos. cada combo tem o evento onchange... quero que quando esse evento for acionado o próximo combo receba o focus()... porém não quero fazer passando o id de cada carinha.... quero uma forma que simule o pressionar de uma tecla, no caso o tab.... fiz esse script, que ta dando pau....

 

function TrocaFoco(){ 	var e = window.event.keyCode=9	var key = (window.event) ? event.keyCode : e.which;	if (window.event)		key = event.keyCode	else		key = e.which		if (window.event) //IE		window.event.returnValue = 9;	else //Firefox		e.preventDefault(9);}
ja procurei no forum.. no Pai Google.... e nada....

alguém tem uma idéia pra me ajudar...

abraços

Thiago

Compartilhar este post


Link para o post
Compartilhar em outros sites

caro thiago...se for fazer uma analise de usabilidade esquece issu, pois se você selecionar um valor errado do combo, tera q voltar.se estiver usando teclado, muitos não sabem q para abrir o combo com o teclado tem q utilizar alt+seta para baixo.mas caso você queira fazer issu não custa utilizar idnão me lembro de algo q faça isso automáticoe caso queira fazer sem os ids, tera q fazer uma funcao varendos seus combos colocando em ordem e criar a funcao relacionando o proximo combo

Compartilhar este post


Link para o post
Compartilhar em outros sites

caro thiago...se for fazer uma analise de usabilidade esquece issu, pois se você selecionar um valor errado do combo, tera q voltar.se estiver usando teclado, muitos não sabem q para abrir o combo com o teclado tem q utilizar alt+seta para baixo.mas caso você queira fazer issu não custa utilizar idnão me lembro de algo q faça isso automáticoe caso queira fazer sem os ids, tera q fazer uma funcao varendos seus combos colocando em ordem e criar a funcao relacionando o proximo combo

Bom dia Fabio.Quando você diz: "não custa utilizar id"... eu replico, custa sim... além de muito trabalho engessado(ou seja se amanhã ou depois eu mudar um id, ou adicionar um campo, terei que adicionar um novo parâmetro engessado..... e assim por diante.... enquanto da maneira que eu quero.... seria bem mais fácil... apenas simulando um tab... (sem relacionanemto algum entre combos).... além de tudo... ainda ganho em performance.... http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif "se você selecionar um valor errado do combo, tera q voltar.se estiver usando teclado, muitos não sabem q para abrir o combo com o teclado tem q utilizar alt+seta para baixo".. q q tem a ver com usabilidade... http://forum.imasters.com.br/public/style_emoticons/default/upset.gif caso o cara selecione um valor diferente, o foco vai mudar, mas isso não impede dele voltar para o campo..... deve ter alguma maneira de simular um evento... isso no C# é a coisa mais fácil do mundo..... <_< espero que alguém tenha uma idéia de como fazer isso.. pois não achei em lugar nenhum!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando você diz: "não custa utilizar id"... eu replico, custa sim... além de muito trabalho engessado(ou seja se amanhã ou depois eu mudar um id, ou adicionar um campo, terei que adicionar um novo parâmetro engessado..... e assim por diante.... enquanto da maneira que eu quero.... seria bem mais fácil... apenas simulando um tab... (sem relacionanemto algum entre combos).... além de tudo... ainda ganho em performance.... http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Usa o TabIndex então. Captura todos os elementos INPUT em um ARRAY, filtra o TYPE SELECT e navega baseado no TabIndex

 

"se você selecionar um valor errado do combo, tera q voltar.

se estiver usando teclado, muitos não sabem q para abrir o combo com o teclado tem q utilizar alt+seta para baixo".. q q tem a ver com usabilidade... http://forum.imasters.com.br/public/style_emoticons/default/upset.gif caso o cara selecione um valor diferente, o foco vai mudar, mas isso não impede dele voltar para o campo.....

Isso tem toda relação com a usabilidade da página. A utilização do evento onChange do elemento SELECT para mudança de foco ou redirecionamento de link prejudica mto a navegação pelo teclado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Usa o TabIndex então. Captura todos os elementos INPUT em um ARRAY, filtra o TYPE SELECT e navega baseado no TabIndex

 

Isso tem toda relação com a usabilidade da página. A utilização do evento onChange do elemento SELECT para mudança de foco ou redirecionamento de link prejudica mto a navegação pelo teclado.

discordo plenamente, pra não perder tempo fiz um código utilizando a técnica acima descrita.... mas ainda não estou satisfeito, pois esse código ficou muito maior e complexo do que eu havia imaginado com o anterior.

 

em relação a usabilidade... não afeta em absolutamente nada, uma vez que se o usuario utilizar o teclado, o evento não será disparado enquando ele não mudar o valor do campo (po isso chamado de OnChange).... isso permite que ele use o Tab ou Shift + Tab o quanto quiser... obs (eu testei isso no meu código).....

 

a minha questão ainda não foi respondida...

 

alguém sabe se existe a possibilidade de "emular" um evento do teclado em uma função!????

 

att,

 

Thiago

Compartilhar este post


Link para o post
Compartilhar em outros sites
<script type="text/javascript">			var elems;		window.onload=function(){			elems=document.forms[0].elements;			var foca=function(e){elems[this.ifocus+1].focus();}						for( var i=z=0; ++z,i<elems.length; i++ ){				if( z!=elems.length ){					elems[i].ifocus=i;					elems[i].onchange=foca;				}			}		}		</script>						<form>				<select >		<option>teste 1</option>		<option>teste 2</option>		</select>				<select >		<option>teste A</option>		<option>teste B</option>		</select>				<select >		<option>teste @</option>		<option>teste #</option>		</select>				</form>
agora eh soh fazer os ajustes

Compartilhar este post


Link para o post
Compartilhar em outros sites

discordo plenamente, pra não perder tempo fiz um código utilizando a técnica acima descrita.... mas ainda não estou satisfeito, pois esse código ficou muito maior e complexo do que eu havia imaginado com o anterior.

Se ficou maior é complexo é pq você não utilizou os recursos que a linguagem te permite. Um script com essas funções não supera 10 linhas de código com boa identação.

 

em relação a usabilidade... não afeta em absolutamente nada, uma vez que se o usuario utilizar o teclado, o evento não será disparado enquando ele não mudar o valor do campo (po isso chamado de OnChange).... isso permite que ele use o Tab ou Shift + Tab o quanto quiser... obs (eu testei isso no meu código).....

Sua declaração deixa evidente que você não possui conhecimento profundo em parâmetros de usabilidade web, pois o problema da utilização do evento onChange não tem relação nenhuma com o onFocus.

A seleção com as teclas de navegação do teclado disparam o evento antes que o usuário confirme a seleção e impede a visualização de todas opções caso o usuário não conheça o atalho ALT+[Tecla de Navegação], utilizado para exibir as opções de um elemento SELECT.

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.