Tab automático com jQuery
sábado, 22 de novembro de 2008Salve! Salve! pessoal. Mais um post com uma dica bacana de jQuery!
Esta técnica é útil para acelerar o processo de digitação de campos com valor fixo em formulários. Telefone por exemplo.
Neste mini tutorial eu mostro como os seletores jQuery são poderosos e práticos.
O XHTML
Pra começar o XHTML da página do formulário. É um código bem simples. Mas quem não estiver familiarizado com XHTML é só deixar comentado que respondo!
Basicamente este código monta uma página com 3 campos de texto para o DDD, o prefixo e o número do telefone.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="pt-BR"> <head> <title>Tab automático com jQuery</title> <script type="text/javascript" src="jquery-1.2.6.min.js"></script> <script type="text/javascript"> [...código javascript comentado abaixo...] </script> </head> <body> <form method="post" action="autotab.htm"> <fieldset> <label for="ddd">DDD</label> <input type="text" class="autotab" name="ddd" id="ddd" maxlength="2" size="2" tabindex="1" /> <label for="prefixo">Prefixo</label> <input type="text" class="autotab" name="prefixo" id="prefixo" maxlength="4" size="4" tabindex="2" /> <label for="numero">Número</label> <input type="text" class="autotab" name="numero" id="numero" maxlength="4" size="4" tabindex="3" /> </fieldset> </form> </body> </html>
Agora o código javascript
1 2 3 4 5 6 7 8 9 10 11 | $(document).ready(function() { $(".autotab").keyup( function (event) { if ((event.which >= 48 && event.which <= 57) || (event.which >= 96 && event.which <= 105)) { if ($(this).val().length == $(this).attr('maxlength')) { var tabindex = $(this).attr('tabindex'); tabindex++; $('input[tabindex=' + tabindex + ']').focus(); } } }); }); |
Na linha 1 do javascript, criamos a função que executa o script apenas após o carregamento completo do DOM.
Na linha 2 criamos uma função que será executada no eventro keyup, ou seja, sempre que se pressionar (e soltar) uma tecla. Aí está um dos “pulos do gato” da jQuery, os seletores!
Usando $(’.autotab’) selecionamos todos elementos que tiverem a classe autotab atribuída. Esta classe foi atribuída aos elementos input type=”text”
Na linha 3 verificamos se foi pressionada uma tecla numérica 0 a 9.
Na linha 4 verificamos se a quantidade de caracteres digitados - $(this).val().length - no campo é igual ao atributo maxlength - $(this).attr(’maxlength’) - do elemento.
Nas linhas de 5 a 7, caso satisfaça a condição, muda o foco para o próximo elemento na sequencia de tabindex usando o seletor [attribute=value] - $(’input[tabindex=' + tabindex + ']‘).focus();
Este post não foi muito didático, mas o lema da jQuery é esse mesmo, Write Less, Do More, ou, Escreva menos e faça mais :), portanto, quaisquer dúvidas responderei (ou tentarei responder) através dos comentários.
Clique aqui para ver o exemplo em funcionamento!
É isso aí pessoal! Exemplo simples mas que pode ser muito útil em nossos projetos!
Ao som de O Rappa - Monstro invisível, Forte Abraço! Até o próximo post!