Magento Checkout Street Line Ошибка автозаполнения


12

Недавно я заметил, что у ряда заказов в нашем магазине Magento линия улицы 1 скопирована в линию улицы 2.

Я немного покопался, и, похоже, это связано с автозаполнением Chrome. Если вы посмотрите на поля формы, Magento использует биллинг [улица] [] и доставку [улица] [] в качестве имен полей для обеих линий улиц. Таким образом, Chrome не может определить, какой из них есть, и автоматически заполняет адресную строку 1 в обоих полях.

Существует некоторая информация, которую вы можете использовать, используя атрибут autocomplete в поле ввода формы, чтобы указать, к какому полю она должна быть привязана, но это не поддерживается и не работает. Фактически, если вы попытаетесь это сделать, он отключит автозаполнение во всей форме. Я также попытался изменить имя поля, но это нарушает контроль. Кажется, мне нужно было бы углубиться в код и изменить имя поля в форме и в любом месте, где на него ссылаются, отправлять в PayPal, сохранять в БД и т. Д. Это похоже на кошмар.

Кто-нибудь имел дело с этим и / или есть предложение?


Вы нашли решение этой проблемы? С автоматической печатью этикеток при отправке мы обнаруживаем только 20% этих ошибок, а иногда перевозчик не доставляет сообщения, так как «адрес указан неверно» ...

Я не нашел истинного, полного решения. Для нас единственной реальной проблемой было зафиксировать это на стороне дисплея при оформлении заказа, поэтому я добавил несколько JS, которые срабатывают при изменении строки 2, и, если оно точно соответствует строке 1, я очищаю его. Это не обрабатывает страницы учетной записи клиента при создании новых адресов, но меня это не так беспокоило.
BrianVPS

Отчасти это связано с «Как запустить автозаполнение Chrome» stackoverflow.com/questions/7223168/… Краткий ответ заключается в удовлетворении требований Regex для имени или метки в code.google.com/p/chromium/codesearch#chromium/ src / components /…
Рэй Фосс,

Ответы:



2

Быстрое небольшое исправление, добавьте атрибут «только для чтения» к входным данным и атрибут onfocus со следующим фрагментом JS:

onfocus="this.removeAttribute('readonly');"

Так что все это должно выглядеть так:

<input type="text" title="Street Address 2" name="billing[street][]" id="billing:street2" value="" class="input-text " readonly onfocus="this.removeAttribute('readonly');">

Chrome не сможет автоматически заполнить поле, но пользователь может ввести его вручную, так как JS будет срабатывать при нажатии на поле.

Сделайте это и для ввода факса, Chrome любит копировать номер телефона в этот.


1
Добро пожаловать в magento SE. Я не думал, что только чтение хорошо - не идея остановить авто поле
Амит Бера

Из опыта люди склонны просто не замечать этого ... что совсем не хорошо и может стоить больших денег, основная трудность в его исправлении - это динамический характер полей.
Рэй Фосс

2

Атрибуты автозаполнения позволяют вам, разработчику, контролировать, как браузер должен заполнять данное поле формы. Например, если вы ожидаете адрес улицы, вы можете указать браузеру, что вы ожидаете его, с помощью autocomplete = "address-line1" . Это позволяет браузеру неправильно угадывать поля формы на вашем веб-сайте, что может привести к ухудшению работы пользователей.

https://developers.google.com/web/updates/2015/06/checkout-faster-with-autofill


2

Использование x-autocompletetype="address-line2"не работает с последней версией Chrome (65.0.3325.106), оно все равно будет дублировать первый адрес улицы на оба входа. Однако, похоже , autocomplete="address-line1"и autocomplete="address-line2"работает как положено.

Подробнее здесь: https://developers.google.com/web/updates/2015/06/checkout-faster-with-autofill#address

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.