Por Luciano Moreno
Uma solução a este problema é capturar tal evento, ou seja, o clique do usuário da tecla Enter, já que se o conseguimos poderemos chamar a uma função JavaScript que nos envie o formulário. O código necessário para isso é o que segue, onde podemos apreciar que Internet Explorer e Netscape Navigator têm uma forma diferente de capturar os eventos, e que usamos o identificador de tecla 13, que é o que corresponde a Enter (podemos usar a tecla ou teclas que necessitarmos):
|
<html> <head> <title>HTMLWeb. WebScript. Design. Botoes com estilo.</title> <style type="text/css"> .link{cursor:default;} </style> <script language="JavaScript" type="text/javascript"> /** * funcao demo do evento onclick na tabela */ function envia() { document.forms[0].submit(); } /** * funcao de captura de clique de tecla na Internet Explorer */ var tecla; function capturaTecla(e) { if(document.all) tecla=event.keyCode; else { tecla=e.which; } if(tecla==13) { document.forms[0].submit(); } } document.onkeydown = capturaTecla; </script> </head> <body> <div align="center"> <form name="form1" action="http://br.yahoo.com" target="_blank" method="post"> <input type="text" name="prova"> </form> <a class="link" href="#" onclick="document.forms.form1.submit();return false"><img src="images/botao.gif" width="85" height="24" border="0" alt="enviar"></a> </div> </body> </html> |
Cujo resultado é o seguinte:
Com isto conseguimos o objetivo buscado: um botão cross-browser (compatível com os diferentes navegadores), que ademais suporte os eventos característicos deste tipo de elementos de formulário.
O inconveniente é que os textos que aparecem na imagem devem ser fixos, salvo que definamos diferentes imagens para os possíveis casos. No caso de páginas que devam suportar multi-idioma, isto se converte em um obstáculo importante. Veremos como podemos encontrar uma solução para isto.