2012-01-03 3 views
51

Я делаю регистрационную форму для своего сайта. Он содержит различные стандартные поля формы. Например: имя, адрес, номер телефона, имя пользователя, пароль и т. Д.Включение автозаполнения формы браузера

Когда я дважды щелкаю по полю (в Chrome 16), поэтому я могу автозаполнять свой адрес, я получаю это сообщение:

Эта страница заблокирована автоматически заполняется для этой формы.

Я не отключил его, поэтому как его включить? Я попытался добавить autocomplete="on" к тегу <form> и к (некоторым) <input> тегам, и это не помогло.

Нужно ли добавить autocomplete="on" в любое поле? Кроме того, как браузер знает, что такое поле? Нужно ли мне называть поля чем-то особенным?

Другой вопрос: есть ли какое-то событие onautocomplete, которое срабатывает при заполнении формы? В моей форме, когда вы вводите почтовый индекс, он просматривается в нашей базе данных (через AJAX), а затем получает состояние и город (выпадающие меню города и штата, поскольку почтовые индексы могут быть для нескольких городов) и заполняет их для тебя. Я надеялся, что я смогу запустить этот запуск после того, как форма была заполнена автоматически.

P.S. Я использую плагин jQuery form validation, если это имеет значение.

+0

добавить автозаполнения = «на» к

тегу, это все. Теперь удалите свою историю за последний час или около того и обновите свою страницу. Надеюсь, это может помочь. С уважением –

+0

Если у вас есть одна учетная запись oracle, войдите на сайт, затем нажмите «Аккаунт рядом с вашим именем», эта страница имеет автозаполнение, которое вы можете увидеть, просмотрев его исходный код. С уважением –

+0

@GagandeepBali: Пробовал это, не помог = (я добавил 'autocomplete =" на "' в '', открыл страницу в режиме инкогнито Chrome, и когда я попытался автозаполнять поле адреса, я получил ошибка в вопросе. –

ответ

72

Проблема заключалась в том, что на теге формы не было method="POST".

После сообщения в Google, я нашел bug report и один из comments, упомянутый method="POST".

Я добавил method="POST", и вуаля! Работа автозаполнения.

В некоторых случаях вам также может понадобиться добавить action, если форма не указана. action="javascript:void(0)" работает.

Примечание: автозаполнение, похоже, вызывает событие onchange.

Примечание 2: А как браузер знает, что поле является то, что смотрите на этот вопрос: How to trigger Autofill in Google Chrome?

+0

Я также добавил метод = POST в мою форму, но уведомление все еще существует ... Chrome 21 –

+0

@PeterO .: Вы тоже дали атрибут 'action'? –

+0

Да, он есть. –

3

Возможность отключения автозаполнения обычно находится в теге формы, см. Страницу разработчика от Mozilla here. Это должно означать, что обычно удаление этого атрибута должно включать его снова на веб-странице.

Что касается второй части с запросом AJAX, я не думаю, что для этого есть слушатель, но вы можете добавить функцию, которая проверяет значение поля каждые х секунд, например, и если оно изменится, вы можете выполнить ваш поиск.

+0

Я хочу включить автозаполнение * на *, а не выключено. –

+0

Я сделал это немного более ясно. Предположим, что если вы можете отключить его, добавив этот атрибут, вы сможете включить его, удалив атрибут. – canihavesomecoffee

+0

Удаление атрибута 'autocomplete' (или установка' autocomplete = "on" ') не включило его. Я все еще получаю сообщение «Эта веб-страница отключила автоматическое заполнение для этой формы.» В Chrome. –

Смежные вопросы