Bueno, estoy tratando de enviar un formulario presionando enter pero sin mostrar un botón de envío. No es posible ingresar a JavaScript si es posible, ya que quiero que todo funcione en todos los navegadores (la única forma de JS que conozco es con eventos).
En este momento el formulario se ve así:
<form name="loginBox" target="#here" method="post">
<input name="username" type="text" /><br />
<input name="password" type="password" />
<input type="submit" style="height: 0px; width: 0px; border: none; padding: 0px;" hidefocus="true" />
</form>
Lo que funciona bastante bien. El botón Enviar funciona cuando el usuario presiona Intro, y el botón no se muestra en Firefox, IE, Safari, Opera y Chrome. Sin embargo, todavía no me gusta la solución, ya que es difícil saber si funcionará en todas las plataformas con todos los navegadores.
¿Alguien puede sugerir un mejor método? ¿O es esto tan bueno como se pone?
Respuestas:
Tratar:
Eso empujará el botón hacia la izquierda, fuera de la pantalla. Lo bueno de esto es que obtendría una degradación elegante cuando CSS esté deshabilitado.
Actualización: solución para IE7
Según lo sugerido por Bryan Downing + con
tabindex
para evitar que la pestaña alcance este botón (por Ates Goral):fuente
position: absolute; width: 1px; height: 1px; left: -9999px;
tabindex="-1"
Creo que deberías seguir la ruta Javascript, o al menos yo haría lo siguiente:
fuente
keydown
partirkeypress
de un apoyo más amplio, pero también hay que añadire.preventDefault();
antes de laif
si la esperanza de apoyar Chrome..on('keypress'...)
en su lugar. Los documentos para.on()
parece que hace la.preventDefault()
llamada por usted.¿Has probado esto?
Dado que la mayoría de los navegadores entienden
visibility:hidden
y realmente no funcionadisplay:none
, supongo que debería estar bien. Realmente no lo he probado, así que CMIIW.fuente
visibility: hidden
: como puedes leer en w3schools , visibity: ninguno todavía afecta el diseño. Si desea evitar este espacio en blanco, la solución con posicionamiento absoluto parece ser mejor para mí.<input type="submit" style="visibility: hidden; position: absolute;" />
position: absolute; left: -100px; width: 1px; height: 1px;
Otra solución sin el botón enviar:
HTML
jQuery
fuente
Para cualquiera que esté buscando esta respuesta en el futuro, HTML5 implementa un nuevo atributo para los elementos del formulario
hidden
, que se aplicará automáticamentedisplay:none
a su elemento.p.ej
fuente
Use el siguiente código, esto solucionó mi problema en los 3 navegadores (FF, IE y Chrome):
Agregue la línea anterior como primera línea en su código con el valor apropiado de nombre y valor.
fuente
En lugar del truco que usas actualmente para ocultar el botón, sería mucho más simple establecer
visibility: collapse;
el atributo de estilo. Sin embargo, todavía recomendaría usar un poco de Javascript simple para enviar el formulario. Hasta donde yo entiendo, el apoyo para tales cosas es omnipresente hoy en día.fuente
Simplemente establezca el atributo oculto en verdadero:
fuente
La forma más elegante de hacerlo es mantener el botón de envío, pero establecer su borde, relleno y tamaño de fuente en 0.
Esto hará que las dimensiones del botón sean 0x0.
Puede intentarlo usted mismo y al establecer un contorno en el elemento verá un punto, que es el borde exterior que "rodea" al elemento 0x0 px.
Sin necesidad de visibilidad: oculto, pero si te hace dormir por la noche, también puedes incluirlo en la mezcla.
JS Fiddle
fuente
IE no permite presionar la tecla ENTER para el envío del formulario si el botón de envío no está visible y el formulario tiene más de un campo. Dale lo que quiere al proporcionar una imagen transparente de 1x1 píxeles como botón de envío. Por supuesto, ocupará un píxel del diseño, pero mira lo que tienes que hacer para ocultarlo.
fuente
Esta es mi solución, probada en Chrome, Firefox 6 e IE7 +:
fuente
Esto funciona bien y es la versión más explícita de lo que está tratando de lograr.
Tenga en cuenta que existe una diferencia entre
display:none
yvisibility:hidden
para otros elementos de formulario.fuente
Solución HTML5
fuente
la forma mas sencilla
fuente
Para aquellos que tienen problemas con IE y para otros también.
fuente
float: left;
, cuando se elimina, se envía.También puedes probar esto
Puede incluir una imagen con ancho / alto = 0 px
fuente
Trabajo con un montón de marcos de UI. Muchos de ellos tienen una clase integrada que puede usar para ocultar cosas visualmente.
Oreja
Material angular
Las mentes brillantes que crearon estos marcos han definido estos estilos de la siguiente manera:
fuente
Lo agregué a una función en el documento listo. Si no hay un botón de envío en el formulario (todos mis Formularios de diálogo de Jquery no tienen botones de envío), agréguelo.
fuente
fuente
He usado:
y:
en el archivo .css Funcionó mágicamente para mí también. :)
fuente