Ir para conteúdo
Fórum Script Brasil
  • 0

Utilizando [Enter] para mudar o foco de formulário


Jonathan Queiroz

Pergunta

Código:

<html>
<head>
    <title>Minha Página</title>
</head>
<body>
<form name="nome_de_seu_formulario">
<input type="text" name="meu_campo" value="teste">
<input type="text" name="valor2" value="valor do campo">
<input type="text" name="qualquer_coisa" value="qualquer coisa aqui">
</form>
<script type="text/javascript">
//Essa variável guarda o número do elemento que está com foco atualmente
foco=0;
//Função executada quando a página é carregada
window.onload=function(){
    //Quando uma tecla for pressionada, chama a função "VerificaTecla"
    document.body.onkeydown=VerificaTecla
    //Atribui o formulário a variável "x"
    x=document.nome_de_seu_formulario
    //Percorre os elementos do formulário e modifica seu evento onfocus (quando o campo obtém foco)
        for(i=0;i<=x.length;i++){
            x.onfocus="MudaFoco("+i+")"
        }
}
//Função "MudaFoco" (muda o valor da variável foco para o parâmetro que foi passado)
function MudaFoco(i){
    foco=i
}
//Essa função verifica se a tecla pressionada foi 'Enter'
function VerificaTecla(){
    if (event.keyCode==13 /*Pode-se utilizar qualquer valor ASCII, o 13 corresponde ao enter*/){
        //Atribui o formulário à variável "x"
        x=document.nome_de_seu_formulario
        //Verifica se o elemento selecionado atualmente é o último elemento do formulário
        if (foco+1<x.length){
            foco++
        }else{
            foco=0
        }
        //Dá foco ao próximo elemento
        x.elements(foco).focus()
        //Retorna "false", o que "cancela" o pressionamento da tecla
        return false;
    }
}
</script>
</body>
</html>

Observação:

  • Ao invés de "13", pode-se utilizar qualquer outro número (no caso de utilizar outra tecla, é claro).Esse número foi utilizado porque corresponde ao [Enter]

O código está todo comentado

Portanto, não há necessidade de explicar mais ainda (caso tenham alguma dúvida, perguntem)

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

Olá, perdão por upar um tópico tão antigo.

Primeiramente queria agradecer por compartilhar o código pois me ajudou muito. De verdade. Então, muito obrigado.

Mas tenho uma dúvida: Tem como fazer o código funcionar para uma div inteira? Eu tenho 2 formulários em uma mesma div e queria que o código funcionasse para os dois, ou para todos os formulários na página.

Obrigado novamente.

Link para o comentário
Compartilhar em outros sites

  • 0

consegui com isso:

caixasInput = $("input");
function pressKey(ev){
   if(ev.keyCode == 13){
      caixaAtual = caixasInput.index(this);
      if(caixasInput[caixaAtual+1] != null)
          caixasInput[caixaAtual+1].focus();
     ev.preventDefault();
     return false;
  }
  return true;
}

$("input").keypress(pressKey);

;)

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...