Categorías
- adsense
- blogging
- consumo
- desarrollo y programación
- .htaccess
- .net
- ajax
- ajax.net
- ant
- apache
- ascii
- bases de datos
- bbpress
- css
- delphi
- dom
- dreamweaver
- eclipse
- emule
- expr. regulares
- firefox
- formularios web
- ftp
- gmail
- google-gwt
- hibernate
- html
- iis
- internet explorer
- java
- javascript
- librerias
- linux
- microformats
- ofimática
- php
- servicios web
- ssl
- ubuntu
- vbscript
- wiki
- wordpress
- xampp
- xml
- hardware
- hogar
- matemáticas
- motos
- ofertas
- opinión
- salud
- sin categoría (todavía)
- sistemas operativos
- tecnologia
- tramites y legislación
La mejor forma de enviar un formulario: sustituir boton submit por un enlace
Suena un poco pretencioso eh? pues veamos, si utilizamos un botón normal de submit resulta difícil estilizarlo con CSS de forma consistente y cross-browser. Lo mejor es utilizar un enlace pero claro, el envío habría que hacerlo siempre por javascript (poniéndo algo como
<a href="javascript:document.forms[0].submit()">Submit</a>) y eso no queda muy accesible ya que siempre hay que contar con que el cliente pueda tener su javascript desactivado. Y cual es la solución? pues fácil, poner un botón submit, y si tenemos javascript disponible, hacer una pequeña función que lo sustituya por un enlace. Dicha función tendrá que recorrer todos los elementosinput, seleccionar el de tiposubmity hacer lo siguiente: crear el enlace, ponerle el texto del botón, asignarlejavascript:document.forms[0].submit()a su atributohref, y finalmente eliminar el botónsubmit.Y he aquí un pequeño ejemplo muy ilustrativo:
Si lo pruebas podrás observar que el envío del formulario funciona tanto haciendo click sobre el enlace como apretando la tecla Enter. Y por supuesto, en cuanto a la estilización del enlace, no tendríamos más que añadirle la clase correspondiente y con CSS podemos darle el aspecto que queramos (de botón incluso, también podemos hasta evitar que el puntero sea una mano para aumentar su similitud con un botón)
Otros artículos de esta serie: