ACTUALIZACIÓN para 2017: Parece que la respuesta de Katie tiene más información actualizada que la mía. Futuros lectores: den su voto positivo a su respuesta .
Esta es una gran pregunta y para la cual la documentación es sorprendentemente difícil de encontrar. En realidad, en muchos casos encontrará que la funcionalidad de Autocompletar de Chrome "simplemente funciona". Por ejemplo, el siguiente fragmento de html produce un formulario que, al menos para mí (Chrome v. 18), se llena automáticamente después de hacer clic en el primer campo:
<!DOCTYPE html>
<html>
<body>
<form method="post">
First name:<input type="text" name="fname" /><br />
Last name: <input type="text" name="lname" /><br />
E-mail: <input type="text" name="email" /><br />
Phone: <input type="text" name="phone" /><br />
Address: <input type="text" name="address" /><br />
</form>
</body>
</html>
Sin embargo, esta respuesta no es satisfactoria, ya que deja la solución en el ámbito de la "magia". Profundizando, aprendí que Chrome (y otros navegadores habilitados para autocompletar) se basan principalmente en pistas contextuales para determinar el tipo de datos que se deben completar en los elementos del formulario. Los ejemplos de tales pistas contextuales incluyen el name
de un elemento de entrada, el texto que rodea el elemento y cualquier texto de marcador de posición.
Recientemente, sin embargo, el equipo de Chrome reconoció que esta es una solución insatisfactoria, y han comenzado a presionar por la estandarización en este asunto. Una publicación muy informativa del grupo de Google Webmasters recientemente discutió este problema, explicando:
Desafortunadamente, hasta ahora ha sido difícil para los webmasters asegurarse de que Chrome y otros proveedores de llenado de formularios puedan analizar su formulario correctamente. Existen algunas normas; pero imponen cargas onerosas en la implementación del sitio web, por lo que no se usan mucho en la práctica.
(Los "estándares" a los que se refieren es una versión más reciente de la especificación mencionada en la respuesta de Avalanchis anterior).
La publicación de Google continúa describiendo su solución propuesta (que se encuentra con críticas significativas en los comentarios de la publicación). Proponen el uso de un nuevo atributo para este propósito:
Simplemente agregue un atributo al elemento de entrada, por ejemplo, un campo de dirección de correo electrónico podría verse así:
<input type=”text” name=”field1” x-autocompletetype=”email” />
... donde x-
significa "experimental" y se eliminará si esto se convierte en un estándar. Lea la publicación para obtener más detalles, o si desea profundizar, encontrará una explicación más completa de la propuesta en el wiki de whatwg .
ACTUALIZACIÓN:
Como se señala en estas respuestas perspicaces , se pueden encontrar todas las expresiones regulares que Chrome usa para identificar / reconocer campos comunes . Entonces, para responder la pregunta original, solo asegúrese de que los nombres de sus campos html coincidan con estas expresiones. Algunos ejemplos incluyen:autofill_regex_constants.cc.utf8
- nombre de pila:
"first.*name|initials|fname|first$"
- apellido:
"last.*name|lname|surname|last$|secondname|family.*name"
- correo electrónico:
"e.?mail"
- Dirección Línea 1):
"address.*line|address1|addr1|street"
- código postal:
"zip|postal|post.*code|pcode|^1z$"
¡Esta pregunta es bastante antigua pero tengo una respuesta actualizada !
Aquí hay un enlace a la documentación de WHATWG para habilitar el autocompletado.
Google escribió una guía bastante buena para desarrollar aplicaciones web que sean amigables para dispositivos móviles. Tienen una sección sobre cómo nombrar las entradas en los formularios para usar fácilmente el autocompletado. A pesar de que está escrito para dispositivos móviles, esto se aplica tanto para escritorio como para dispositivos móviles.
Cómo habilitar Autocompletar en sus formularios HTML
Aquí hay algunos puntos clave sobre cómo habilitar el autocompletado:
<label>
para todos sus<input>
camposautocomplete
atributo a sus<input>
etiquetas y complételo con esta guía .name
yautocomplete
correctamente para todas las<input>
etiquetasEjemplo :
Cómo nombrar tus
<input>
etiquetasPara activar el autocompletado, asegúrese de nombrar correctamente los atributos
name
yautocomplete
en sus<input>
etiquetas. Esto permitirá automáticamente el autocompletado en formularios. ¡Asegúrate también de tener un<label>
! Esta información también se puede encontrar aquí. .Aquí le mostramos cómo nombrar sus entradas:
name
:name fname mname lname
autocomplete
:name
(para nombre completo)given-name
(para el primer nombre)additional-name
(para el segundo nombre)family-name
(por apellido)<input type="text" name="fname" autocomplete="given-name">
name
:email
autocomplete
:email
<input type="text" name="email" autocomplete="email">
name
:address city region province state zip zip2 postal country
autocomplete
:street-address
address-line1
address-line2
address-level1
(Estado o Provincia)address-level2
(ciudad)postal-code
(código postal)country
name
:phone mobile country-code area-code exchange suffix ext
autocomplete
:tel
name
:ccname cardnumber cvc ccmonth ccyear exp-date card-type
autocomplete
:cc-name
cc-number
cc-csc
cc-exp-month
cc-exp-year
cc-exp
cc-type
name
:username
autocomplete
:username
name
:password
autocomplete
:current-password
(para formularios de inicio de sesión)new-password
(para formularios de registro y cambio de contraseña)Recursos
fuente
De mis pruebas, la
x-autocomplete
etiqueta no hace nada. En su lugar, useautocomplete
etiquetas en sus etiquetas de entrada y establezca sus valores de acuerdo con las especificaciones HTML aquí http://www.whatwg.org/specs/web-apps/current-work/multipage/association-of-controls-and-forms. html # autofill-field .Ejemplo:
La etiqueta de formulario principal necesita autocompletar = "on" y method = "POST".
fuente
on
,off
odefault
. Por lo tanto, este marcado no es válido y será propenso a inconsistencias. De hecho, creo que la ubicación en el atributo de autocompletar es irrelevante. Supongo que analiza todos los atributos y el autocompletado es uno de los que verifica.Debe nombrar los elementos adecuadamente para que el navegador los complete automáticamente.
Aquí está la especificación IETF para esto:
http://www.ietf.org/rfc/rfc3106.txt 1
fuente
Acabo de jugar con la especificación y obtuve un buen ejemplo de trabajo, incluidos algunos campos más.
JSBIN
Contiene 2 áreas de direcciones separadas y también diferentes tipos de direcciones. También lo probé en iOS 8.1.0 y parece que siempre llena todos los campos a la vez, mientras que el escritorio automático de Chrome completa la dirección por dirección.
fuente
Parece que tendremos más control sobre esta función de autocompletar, hay una nueva API experimental que llega a Chrome Canary, que se puede usar para acceder a los datos después de solicitarla al usuario:
http://www.chromium.org/developers/using-requestautocomplete http://blog.alexmaccaw.com/requestautocomplete
nueva información de google:
http://googlewebmastercentral.blogspot.de/2015/03/helping-users-fill-out-online-forms.html
https://developers.google.com/web/fundamentals/input/form/label-and-name-inputs#use-metadata-to-enable-auto-complete
fuente
Aquí está la respuesta real:
Esto funciona: http://jsfiddle.net/68LsL1sq/1/
<label for="name">Nom</label>
Esto no: http://jsfiddle.net/68LsL1sq/2/
<label for="name">No</label>
La única diferencia está en la etiqueta misma. El "Nom" viene de "Nombre" o "Nome" en portugués.
Entonces, esto es lo que necesitas:
<label for="id_of_field">Name</label>
<input id="id_of_field"></input>
Nada mas.
fuente
Aquí está la nueva lista de "nombres" de Autocompletar de Google. Existen todos los nombres admitidos en cualquier idioma permitido.
autofill_regex_constants.cc
fuente
Google ahora proporciona documentación para esto:
Ayuda a los usuarios a pagar más rápido con Autocompletar | Web | Desarrolladores de Google
y
Cree formas asombrosas: use metadatos para habilitar el autocompletado | Web | Desarrolladores de Google
fuente
En mi caso,
$('#EmailAddress').attr('autocomplete', 'off');
no se trabaja. Pero los siguientes trabajos en Chrome Versión 67 por jQuery.fuente