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

Trocar o foco de um campo a partir de uma tecla qualquer


KaKarotto

Pergunta

Galera, já vi alguns posts de pessoas querendo trocar o comportamento padrão das teclas em um formulário. Decidi fazer esse código pra não ter que ficar respondendo sempre a mesma coisa e para facilitar na hora de procurar o código.

function keyAction
    (form, keyCode, fn){

 var el=form.elements

     for(var x=0; x<el.length; x++){
         el[x].proximo=el[x+1>=el.length?0:x+1]
         el[x].onkeydown=function(event){
             if(window.event)
             var evento=window.event

             else
             var evento=event

             var continua=true
             if(typeof fn=="function")
             continua=fn.call(this, evento, keyCode)

             if(continua){
                 if(evento.keyCode==keyCode){
                     if(
                         this.type &&
                         evento.keyCode == 13 &&
                         this.type == "submit"
                     ) {this.form.submit(); return false}

                 this.proximo.focus()
                 return false
                 }
             }
         }
     }
}
O comportamento padrão desta função é trocar o foco do elemento do formulário ao apertar uma tecla passada como segundo argumento da função. Quando este elemento for um elemento de tipo "submit" ele não trocará mais de foco e fará o submit do form. Apesar deste comportamento estar pré-estabelecido, a função é genérica, podendo ser mudada passando uma função como argumento para modificar o comportamento padrão ou adicionar mais comportamentos. A função passada como argumento pode retornar true ou false, se true, a função genérica continua com seu comportamento padrão que é trocar o foco do elemento ao apertar a tecla "Enter". Se ela retornar false então ela vai ser executada e a função genérica pára assim que a função passada como argumento acabar de ser executada. Portanto, se além de trocar o foco quando o usuário teclasse "Enter" eu quisesse submitar o form quando o usuário teclasse "Tab", eu faria na chamada da função:
window.onload=function(){
        keyAction(
            document.getElementById("formulario"), 13,
            function(evento, keyCode){
                if(evento.keyCode==9)
                this.form.submit()
            return true
            }
        )
}
Caso eu quisesse apenas o comportamento padrão:
window.onload=function(){
         keyAction(document.getElementById("formulario"), 13)
 }

Posta aqui sobre as dúvidas relacionadas a este script, sugestões e/ou críticas.

Aquele abraço.

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

<_< damn...

Que coisa esquisita...deve ter algum erro de lógica.

Vou dar uma olhada no código, valeu pelo feedback.

Abraço.

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,1k
    • Posts
      651,8k
×
×
  • Criar Novo...