Categorias

Arquivos

Focus nos campos com o Jquery

Postado em Agosto 02nd, 2007 por Alexandre Magno

Jquery

Desculpem a demora para escrever outro Post. Estava de viagem para a minha terra natal e lá o acesso a internet é literalmente remoto.

Vou mostrar mais um simples efeito com o Jquery. Está vendo o campo de busca acima? Percebeu que quando você clica no campo a borda muda de cor e ao retirar o mouse a borda volta ao normal? Estes dois eventos correspondem ao focus e blur do Javascript respectivamente. Se não fosse o digníssimo IE6, como mostrei em posts anteriores com a pseudo-classe hover, seria possível conseguir este efeito totalmente por CSS, mas o IE6 não suporta e ele ainda é o mais usado.

Graças ao Jquery, este efeito pode ser conseguido facilmente e mais uma vez sem precisar inserir eventos no HTML.

Para começar, não esqueça de inserir a framework no head do documento. Isto foi falado nos posts anteriores.

Vamos ao código do efeito:

// focus nos campos
$('.campo').focus(function(){
 
  $(this).toggleClass('campo_focus');
 
});
 
$('.campo').blur(function(){
 
$(this).toggleClass('campo_focus');
 
});

Com o código acima, todos os campos com a classe campo mudará sua classe para a classe campo_focus quando o evento focus for acionado e irá retirar a classe campo_focus quando o evento blur for acionado. Relebrando o toggleClass, que já foi falado no post Hover em tabelas com o Jquery, ele adiciona a classe se ela não estiver presente, e elimina a classe se ela estiver presente. Ou seja, alterna a classe. Ela não funcionou bem para hover em tabelas, sendo necessário mudar para outro método. Mas aqui foi testado no IE6, IE7, Fiferox 2.xx e Opera 9 e funcionou perfeitamente.

Abaixo o CSS da classe campo_focus:

.campo_focus {
   border: 1px solid red;
}

Ele apenas muda a borda para vermelho.

O mesmo raciocínio pode ser aplicado para botões input. No botão de buscar acima ele muda de classe quando o usuário passa o mouse por cima e volta para a classe original quando o usuário retira o mouse. Simplesmente foi adicionado o evento hover neste campo com o toggleClass. Quer experimentar?

Artigos relacionados


Comentários

Assine o RSS para comentários

JulioGreff comentou:

2nd Agosto, 2007 às 9:59 pm

Bom artigo! Mas mesmo assim, mesmo vendo certas coisas da jQuery, não consigo usar essa lib, não me sinto a vontade… E olha que já tentei mais de uma vez.
Só pra ter certeza: os métodos blur e focus são da jQuery né? Eles fazem o mesmo que o addEventListener?

admin comentou:

3rd Agosto, 2007 às 9:19 am

É Júlio, eu entendo como é por que com outras frameworks Javascript eu senti a mesma coisa, mas com o Jquery foi diferente. Existem várias boas frameworks, mas todas elas possuem algo em comum: facilitam a vida do desenvolvedor. Muitos programadores Javascript tradicionais podem pensar que ela seja “comodismo”, mas sem dúvida é uma ferramenta assim como frameworks para linguagens de servidor.
Enquanto aos eventos, blur e focus do Jquery correspondem ao onBlur e onFocus do Javascript.
Abraços…

Ferdinando comentou:

16th Julho, 2008 às 10:37 am

Olha meu amigo, mudou minha maneira de pensar sobre programação JAVASCRIPT, de tão facil que é, chega a brincar com nossa inteligência, e nos perguntar, porque demorou tanto pra alguem pensar nisso.. A dificuldade é natural, mais com certeza, com amigos e algumas horas de google, woce se acostuma.
Abraços
Ferdinando - REDE DO BEM

mateus comentou:

9th Dezembro, 2008 às 10:31 am

Tbm gosto bastante de Jquery , o post foi legal, aplique aqui no meu projeto deu um bug qdo uso a validação,

Yuri Almeida comentou:

7th Julho, 2009 às 9:55 pm

Cara, eu sou leigo, e não sei se você falou sobre sem eu ter percebido… Mas é aqui só funcionou aqui depois que eu coloquei entre $(document).ready(function(){ FUNCAO QUE VOCÊ COLOCOU ACIMA });

Alexandre Magno comentou:

8th Julho, 2009 às 12:52 pm

@Yuri: O document.ready tem que ser usado em todas as chamadas. Havia falado em outros posts que não iria falar mais esta parte, que seria trivial, incluir o jquery no head e fazer esta chamada. Realmente você tem que usá-lo em todos os seus scripts para que funcione ou qualquer um usado no blog. Abraços e boa sorte…

Alexandre comentou:

26th Novembro, 2009 às 11:57 am

Muito boa a matéria, mas tenho uma dúvida: Este (this) é o campo atual, certo? Como faço pra mudar TODOS os campos que estão com a classe .campo?

Valeu!

Alexandre Magno comentou:

26th Novembro, 2009 às 4:08 pm

@Alexandre: Neste caso é só referenciar pelo seletor, neste caso $(’.campo’). Espero ter ajudado abraços!

Alexandre comentou:

22nd Julho, 2010 às 3:10 pm

teria como junto com este efeito acrescentar o efeito de hover ?

abs!

Alexandre Magno comentou:

22nd Julho, 2010 às 3:46 pm

@Alexandre: Sim poderia ser usado sem problema.

Alexandre comentou:

22nd Julho, 2010 às 4:04 pm

como faço isso ?

Alexandre comentou:

23rd Julho, 2010 às 2:22 am

@Alexandre Magno, pode me ajudar ?

meu código ta belezinha gostaria de apenas ACRESCENTAR o hover nos campos…

veja meu código:
http://pastebin.com/e0hLeNaq

se puder me ajuadar ficarei muito grato.

abração.

Alexandre comentou:

23rd Julho, 2010 às 2:37 am

CORREÇÃO MEU CÓDIGO:
http://pastebin.com/r463r6VW

Alexandre Magno comentou:

26th Julho, 2010 às 10:33 am

@Alexandre: Dê uma olhada no artigo:
http://www.alexandremagno.net/blog/2007/07/18/hover-em-tabelas-com-o-jquery

Ao invés de passar um código pronto acho muito melhor você entender como fazer. Abraços e boa sorte.

Deixe seu comentário

Os seguintes campos estão incorretos ou faltando

  • Listagem dos campos faltando
(Não será publicado) * Campos obrigatórios