Quinta-feira, 12 de Abril, 2007 | 10 comentários | 
Recentemente tenho desenvolvido alguns formulários mais elaborados e não poderia de deixar registrado aqui esta dica. Pretendo escrever uma série de artigos relacionados com o dia-a-dia de um desenvolvedor Web.
Para quem vive trabalhando com formulários e suas validações, o uso de manipuladores de eventos com JavaScript pode ajudar na produtividade geral e trazer alguns benefícios diretos.
Se você já sabe do que se trata eventos, pule para a seção Eventos na prática. Caso contrário recomendo ler "O que são eventos?".
Eventos ou events são comportamentos de ações dos visitantes sobre um determinado elemento de uma página. Quando um usuário visita uma página e interage (clicando, digitando, movendo, etc.), está produzindo eventos.
Existem diversos eventos definidos para uso com JavaScript. Alguns são para uso restrito com algum elemento xHTML, como o caso do onSubmit que é usado somente com o elemento form. Abaixo listo alguns eventos principais (veja uma lista mais extensa):
| Evento | Executado quando... |
|---|---|
| onBlur | ...o elemento perde o foco |
| onChange | ...o elemento muda de valor |
| onClick | ...o usuário clica sobre o elemento |
| onFocus | ...o elemento é focado |
| onKeyPress | ...o usuário pressiona alguma tecla sobre o elemento |
| onLoad | ...o elemento é carregado por inteiro |
| onMouseOver | ...o usuário move o ponteiro do mouse sobre o elemento |
| onMouseOut | ...o usuário retira o ponteiro do mouse do elemento |
| onSubmit | ...o elemento (formulário) é submetido |
Os eventos podem ser usados de forma inline, ou de forma externa, com o uso de algum manipulador de eventos.
Na primeira forma, você define tudo diretamente na tag do elemento. Veja um exemplo:
<form onsubmit="javascript:alert(this.a.value);return false;"> <input type="text" name="a" onkeyup="javascript:this.value=this.value.toUpperCase();" /> <input type="submit" /> </form>
No exemplo acima foram definidos 2 eventos: onSubmit para o formulário e o onKeyUp para um campo do formulário. Se você precisa alterar depois alguma propriedade deste evento, deverá editar diretamente no código do seu formulário.
Uma outra maneira prática é com uso de manipuladores, criados afim de tornar o código mais flexível e organizado.
Neste exemplo uso o event listener criado por Carlos R. L. Rodrigues, que adiciona ou remove um evento sobre qualquer elemento. São disponibilizadas 2 funções:
Veja a seguir um exemplo com uso da função addEvent:
<script type="text/javascript" src="/path/to/event-listener.js"></script> <form> <input type="text" name="a" /> <input type="submit" /> </form> <script type="text/javascript"> var f = document.forms[0]; addEvent(f, "submit", function( e ) { alert(f.a.value);return false; }); addEvent(f.a, "keyup", function( e ) { f.a.value=f.a.value.toUpperCase(); }); </script>
Toda a validação fica externa ao formulário. Desta forma, você também pode inserir tal validação num arquivo JavaScript externo. Neste caso, devo atentar que você precisará carregar o arquivo externo depois do elemento a ser modificado ou, caso deseje incluir no head da página, declare a execução apenas quando a página carregar completamente (com uso do evento onLoad), caso contrário o objeto não será encontrado.
Você ainda pode definir uma função e passar como parâmetro no addEvent (no exemplo acima foi criado uma função inline para demonstração).
Da mesma forma que adicionei os eventos à um formulário, poderia também adicionar numa janela (window), num documento (document), etc.
Como afirmado, um dos grandes benefícios com o uso do event listener é a flexibilidade nas alterações posteriores e a organização do código xHTML.
Até a próxima dica da série dia-a-dia de um desenvolvedor Web!
Olá, Ciro!
Primeiramente, parabéns pelo artigo!
Segundamente... hehe
Qual a vantagem de usar desta forma e não assim:
--
var f = document.forms[0];
f .onsubmit = function(){
//blá blá blá
}
--
Na minha concepção, é bem mais claro desta forma.
Forte abraço!
Lauro,
Você pode realmente usar desta forma. Mas o foco desse meu artigo foi demonstrar um event listener, que pode ser útil em algumas situações adversas.
Abraço!
Fala ciro, acompanho seu blog faz muito tempo mas esta é a primeira vez que eu comento nele
Gostei muito do artigo apesar de ja conhecer um pouco deste assunto.
Agora que eu me lembre o asEvent so funciona com com a lib addEvent.js não é não? No IE ela não funciona muito bem, eu normalmente uso obj.event = function() { ... } existe alguma contra-indicação? Flw abraço
Ciro,
Primeiro parabéns pelo artigo,
Você sabe que esse não é meu foco de atividade, mas é sempre bom está lendo sobre assuntos adversos.
Bom vou ficar aguardando seus registros sobre o dia a dia de um desenvolvedor!
Abraço meu amigo.
> Qual a vantagem de usar desta forma e não assim:
> f .onsubmit = function(){ //blá blá blá }
Imagine que vc queira chamar a funcao A e B no onsubmit:
f.onsubmit = funcaoA;
f.onsubmit = funcaoB;
Ao ocorrer o submit, so sera chamado a \\
vc sabe como eu faço pra eu excluir meu uol k?
muito boa essa materia ciro ,eu tava procurando isso a um tempo para tira os onclick da vida dos link
muita clara e objectiva parabens ciro
kakaroto
http://www.obsidian.com.br
Ciro,
Estou tendo um problema com o javaScript, nao consigo abril meu e-mail do msn, ele da a seguinte mensagem me ajude..
É necessário o JavaScript para entrar no Windows Live ID. Este navegador não oferece suporte ao JavaScript ou os scripts estão sendo bloqueados.
Para saber se o navegador oferece suporte ao JavaScript ou para permitir a execução de scripts, consulte a ajuda online do navegador.
Grato
Ivo
Ola, estou com uma duvida, ou sei la eu o que é...
mas é o seguinte, tenho uma função:
Cod....
function submitForm(){
var f= document.formsCadastro;
f.submit();
}
Com isso ele vai enviar os dados do formulário, para um iframe, logo a pagina atual não vai atualizar.
Ai vem o problema!!! quero limpar o form após o envio dos dados... sem ter que clicar em um botão ou algo assim.
quero que depois de enviar os dados, o javascript limpe esse formulário pra mim.
Ficarei muito grato se puderem me ajudar.
to com um problema no pc, e que nao to consiguindo aceita meus amigos no orkut nem colok comnetarios nas fotos dos meus amigos, nem salvar oq eu coloco no meu orkut da sempre um erro que é javascrip:void(0).
fico muito garta se puder me ajudar!
As imagens que aparecem são Gravatars. Ao registrar um, sempre que comentar em algum blog que suporte essa funcionalidade, sua imagem aparecerá ao lado. Se você ainda não tem um gravatar, crie aqui.
English Version © Copyright 2004-2008 Ciro Feitosa - Todos os Direitos Reservados