Você certamente já encontrou essa dica antes; ela é usada pelo Google. Quando você o carrega o cursor salta imediatamente para o campo texto a ser preenchido e fica pronto para que você digite sua pesquisa. Isso acontece tão rapidamente que talvez você nem o perceba, mas, de fato, isso e muito útil em qualquer página onde o propósito principal é preencher um formulário. Isso pode ser feito de várias maneiras, contando que em cada uma delas você identifique o campo que você quer levar o foco com o atributo ID certo (no nosso caso "myfield"). Veja os exemplos:
<body onload="document.getElementById('myfield').focus()">
Esse é mais ou menos o mesmo método utilizado pelo Google,
simples, pequeno e vai direto ao ponto, para funcionar precisa
que você use o evento OnLoad da TAG <body>, mas algumas pessoas acham isso "feio". Então usa-se isso:
<script type="text/javascript">
window.onload = document.getElementById('myfield').focus;
</script>
Esse código pode ser inserido em qualquer parte do seu HTML ou até mesmo oculto em um javascript externo. Se você está usando muito javascript em sua página, então você pode juntar todos os códigos em um javascript separado do seu HTML. Esse método tem uma desvantagem, você somente poderá associar uma coisa ao evento window.onload por vez.
<script type="text/javascript">
addEvent(window, 'load', function() {
document.getElementById('myfield').focus()
}
);
function addEvent(obj, evType, fn){
if (obj.addEventListener){
obj.addEventListener(evType, fn, true);
return true;
} else if (obj.attachEvent){
var r = obj.attachEvent("on"+evType, fn);
return r;
} else {
return false;
}
}
</script>
Esta seria uma boa forma de garantir o uso de várias funções ao evento.
<script type="text/javascript">
document.getElementById('myfield').focus();
</script>
O código acima somente funciona se for colocado dentro do código HTML e for depois do campo INPUT.
Labels
Uma forma rápida de aumentar a usabilidade de seus formulários é acrescentar Labels, se é que você já não as usa. A TAG <label> faz parte do HTML desde 1998, mas muitos desenvolvedores ignoram sua existência. Ela permite que você relacione o texto que descreve um campo com o próprio campo (seja um link para o campo). Quando você clicar na Label, o browser irá mover o foco para o campo relacionado. Ou pré-selecionar no caso de Botões de rádio ou CheckBox. Antes de você acrescentar a label, o campo INPUT deve ter o atributo ID configurado.
Veja um simples exemplo da utilização de label:
<label for="username">Username:</label>
<input type="text" name="username" id="username" size="10">
Clicando no label "Username", o foco irá para o campo texto username. Isso pode não parecer um efeito particularmente muito útil, mas tenho esse efeito como um gancho para estilizar e potencializar comandos Javascripts extras. Isso pode melhorar drasticamente a acessibilidade em softwares de ajuda.
No caso de somente uma CheckBox ou Botão de rádio, é útil para facilitar a seleção do mesmo por parte de usuário, por exemplo na aceitação de algum contrato.
<input type="checkbox" name="accepted" id="accepted">
<label for="accepted">I agree to the terms and conditions</label>
É claro que muitas pessoas não saberão que a label está ativa para receber cliques, então temos um simples truque de CSS para mudar o cursor do mouse ao passar sobre ela:
<style type="text/css">
label {
cursor: pointer;
cursor: hand;
}
</style>
Por que essas duas declarações de cursor? O CSS padrão chama de POINT o "valor do cursor sobre o link". Desafortunadamente o IE versões 5 e 5.5 para Windows não reconhecem esse valor usando "HAND" para o mesmo. Então navegadores melhores lerão POINTER ignorando HAND e essas versões do IE farão o contrário.