web-dev-qa-db-fra.com

L'auto-complétion du formulaire ne fonctionne pas

J'ai créé un formulaire HTML avec plusieurs champs de saisie, rien de spécial. L'utilisation de la version la plus récente de Google Chrome et de l'auto-complétion par Firefox fonctionne avec tous les champs de formulaire, ce qui signifie que chaque fois que je souhaite remplir le formulaire, les navigateurs suggèrent les anciennes valeurs de saisie des champs.

Dans IE8, cela ne fonctionne pas du tout. D'autres formes fonctionnent, mais sur le mien IE ne se souvient pas d'une valeur d'entrée unique. Le formulaire est crypté SSL mais je ne pense pas que ce soit la raison, car j'ai essayé d'autres formulaires SSL qui fonctionnent. Des conseils? Merci!

4
Nick

Selon article MSDN sur la saisie semi-automatique , le problème ne concerne pas uniquement SSL, mais plutôt une combinaison de SSL et des en-têtes de cache envoyés par votre serveur:

Note: if both of the following conditions are true:
   1. The page was delivered over HTTPS
   2. The page was delivered with headers or a META tag that prevents caching

...the Autocomplete feature is disabled, regardless of the existence or 
value of the Autocomplete attribute. This remark applies to IE5, IE6, 
IE7, and IE8.

Ainsi, si vous servez une page sur ssl, vous devrez modifier les en-têtes Cache-control que votre serveur envoie à private, must-revalidate pour permettre à IE autocomplete de fonctionner sur ces pages.

Cela est apparu plusieurs fois sur stackoverflow, avec cette réponse étant particulièrement informatif, incluant la confirmation d'un ingénieur MS que IE est conçu pour fonctionner de cette façon.

3
ConroyP

La saisie semi-automatique "fonctionne normalement" à moins que vous ne la désactiviez activement (soit en définissant l'attribut autocomplete="off" sur votre formulaire ou vos éléments d'entrée, soit en le désactivant via Outils> Options Internet> onglet Conten ).

Cependant, IE dispose d'un moyen approprié d'indiquer à un champ INPUT le type de champ autocomplete que vous utilisez. Il utilise le schéma de nommage VCard pour le faire. Ceci est mieux illustré dans un exemple:

<input type="text" name="email" vcard_name = "vCard.Email" />

<input type="text" name="officephone" vcard_name = "vCard.Business.Phone" />

Vous pouvez en savoir plus à ce sujet dans l'article MSDN ' tilisation de la saisie semi-automatique dans des formulaires HTML '. Notez que ceci est assez ancien, donc vous ne savez pas à quel point il est pertinent pour IE8, mais je suppose qu'il est toujours utilisé.

Juste un mot d'avertissement: les attributs vcard_name et autocomplete sont la propriété de IE et ne sont pas (X) HTML standard et donc si vous les utilisez, votre page ne sera pas validée. Personnellement, je les éviterais, mais voyons si cela fait une différence.

0
Dan Diplo