2011-01-19 9 views
14

Estoy usando algunas funciones de formulario HTML5 para mejorar progresivamente la experiencia del usuario de mi proyecto web. Uno en particular es autofocus, quiero usar esto en un cuadro de diálogo modal (lightbox) que permita a los usuarios ingresar etiquetas. Las etiquetas existentes pueden estar allí.HTML5 autofocus = autoselect?

El único navegador que he instalado que admite el enfoque automático es Chrome 9, sin embargo, cuando lo pruebo allí coloca el foco en el campo, pero también selecciona automáticamente todo el texto existente en el campo. No esperaba o quería autoselección, quiero enfoque automático.

¿Mi expectativa es incorrecta o Chrome está equivocada?

+0

Merece la pena estar atentos a los problemas de accesibilidad como se describe aquí http://webaim.org/blog/future-web-accessibility-html5-input-extensions/ –

Respuesta

6

Más información acerca de enfoque automático y html5 aquí: http://php.quicoto.com/autofocus-in-html5/

Si usted tiene un fragmento de código que podíamos ver, podríamos ser capaces de estar más lejos de la ayuda. Parece bastante sencillo e intuitivo de implementar y dice que la función es compatible con todo menos con Fx e IE.

+0

Bueno, el fragmento es simplemente una entrada con el atributo autofocus incluido: . El ejemplo que incluye tiene sentido, pero se trata de un campo vacío. Como dije, el foco funciona, coloca el cursor en el campo, pero también selecciona todo el texto existente si hay alguno. Eso no es lo que quiero o espero. – Ferdy

+0

¿Está buscando agregar el cursor al final del texto ya existente? Si ese es el caso, eso no es autofocus y, que yo sepa, probablemente necesite javascript ... En cualquier caso, el autofocus está haciendo su trabajo. Como dijo Eli, el autofocus está funcionando. Intenta buscar en js. Lo siento, ojalá pudiera ser de más ayuda. –

+0

En realidad, no me importa si se coloca al principio o al final del texto, debe centrarse en el campo. No debería seleccionar todo el texto en ese campo, ya que eso significa que los usuarios sobrescribirán cualquier valor existente a medida que comienzan a escribir.No estoy de acuerdo con que el autofocus signifique que el texto existente se selecciona automáticamente, pero bueno, si eso es realmente según las especificaciones, que así sea. – Ferdy

-2

Se supone que debe seleccionar el texto, ya que input.focus() también lo hace.

+3

input.select() selecciona el texto, pero input.focus() solo debe enfocar el campo – Maxym

2

Desde el HTML5 specification, los pasos de enfoque no prescriben si se debe seleccionar o no el texto. Los agentes de usuario no están obligados ni tienen prohibido seleccionar el texto. Específicamente, aquí está el relevante focusing step:

El agente de usuario puede aplicar las convenciones relevantes de la plataforma para el enfoque de widgets.

Nota: Por ejemplo, algunas plataformas seleccionan el contenido de un campo de texto cuando se enfoca ese campo.

6

Chrome decidió que estaban equivocados y cambió este comportamiento en Chrome 36.

Lo sé porque yo estaba invoca erróneamente el javascript .focus() y enfoque automático html para seleccionar también el texto. Ahora se requiere .select() para seleccionar y enfocar en el campo de texto. Bueno, ahora podemos ser específicos de lo que queremos :-)

Así que ahora Chrome se comporta como p. Firefox.

+0

¡Gracias por la actualización! – Ferdy