ОБНОВЛЕНИЕ на 2017 год: похоже, что ответ от Кэти содержит больше актуальной информации, чем у меня. Будущие читатели: отдайте свой голос за ее ответ .
Это отличный вопрос, и к нему трудно найти документацию. На самом деле, во многих случаях вы обнаружите, что функция автозаполнения Chrome «просто работает». Например, следующий фрагмент html создает форму, которая, по крайней мере для меня (Chrome v. 18), автоматически заполняется после нажатия в первом поле:
<!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>
Однако этот ответ является неудовлетворительным, поскольку оставляет решение в сфере «магии». Углубившись вглубь, я узнал, что Chrome (и другие браузеры с автозаполнением) в основном полагаются на контекстные подсказки, чтобы определить тип данных, которые должны быть заполнены в элементах формы. Примеры таких контекстных подсказок включают name
элемент ввода, текст, окружающий элемент, и любой текст-заполнитель.
Однако недавно команда Chrome признала, что это неудовлетворительное решение, и начала настаивать на стандартизации в этом вопросе. Очень информативное сообщение от группы Google Webmasters недавно обсуждало эту проблему, объясняя:
К сожалению, до сих пор веб-мастерам было сложно обеспечить, чтобы Chrome и другие поставщики форм могли правильно анализировать свою форму. Существуют некоторые стандарты; но они накладывают тяжелое бремя на реализацию веб-сайта, поэтому они практически не используются на практике.
(«Стандарты», на которые они ссылаются, являются более поздней версией спецификации, упомянутой в ответе Avalanchis выше.)
Пост Google продолжает описывать предложенное им решение (что встречается с серьезной критикой в комментариях к посту). Они предлагают использовать для этой цели новый атрибут:
Просто добавьте атрибут к элементу ввода, например, поле адреса электронной почты может выглядеть так:
<input type=”text” name=”field1” x-autocompletetype=”email” />
... где x-
обозначает "экспериментальный" и будет удален, если и когда это станет стандартом. Прочтите этот пост для получения более подробной информации, или, если вы хотите углубиться, вы найдете более полное объяснение предложения в вики-сайте whatwg .
ОБНОВЛЕНИЕ:
Как указано в этих проницательных ответах , все регулярные выражения, которые Chrome использует для идентификации / распознавания общих полей, можно найти в autofill_regex_constants.cc.utf8
. Поэтому, чтобы ответить на исходный вопрос, просто убедитесь, что имена ваших HTML-полей соответствуют этим выражениям. Вот некоторые примеры:
- Имя:
"first.*name|initials|fname|first$"
- Фамилия:
"last.*name|lname|surname|last$|secondname|family.*name"
- Эл. адрес:
"e.?mail"
- Адресная строка 1):
"address.*line|address1|addr1|street"
- почтовый индекс:
"zip|postal|post.*code|pcode|^1z$"