Помилка автозаповнення Magento Checkout Street Line


12

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

Я здійснив копання, і, схоже, це пов'язано з автоматичним заповненням Chrome. Якщо ви подивитеся на форми форми, Magento використовує рахунки [street] [] та доставку [street] [] як назви полів для обох ліній вулиць. Тож Chrome не може зрозуміти, що таке, і автоматично заповнює рядок 1 адреси в обидва поля.

Деякі відомості плавають навколо того, що ви можете використовувати атрибут автозаповнення в полі введення форми, щоб вказати, до якого поля воно має посилатися, але це не підтримується і не працює. Насправді, якщо ви спробуєте це зробити, це відключає автоматичне заповнення всієї форми. Я також спробував змінити назву поля, але це порушує замовлення. Здається, мені потрібно заглибитися в код і змінити ім'я поля у формі та в будь-якому місці, на яке воно посилається, подається на PayPal, зберігається в БД тощо. Це здається кошмаром.

Хтось займався цим та / або має пропозицію?


Ви знайшли рішення для цього питання? При автоматичному друку етикетки для доставки ми вловлюємо лише 20% цих помилок, а іноді перевізник не доставляє, оскільки "адреса неправильна" ...

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

Частково це стосується "Як запустити автоматичне заповнення Chrome" stackoverflow.com/questions/7223168/… Коротка відповідь полягає у виконанні вимог Regex щодо імені або мітки в коді.google.com/p/chromium/codesearch#chromium/ src / компоненти /…
Рей Фосс

Відповіді:



2

Швидке невелике виправлення, додайте до вводу атрибут "readonly" та атрибут 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. Я не гадаю, що лише на користь читання не є ідеєю зупиняти автоматичне поле
Amit Bera

З досвіду люди, як правило, просто не помічають це ... що зовсім не добре і може коштувати чималих грошей, головна складність у його фіксації - це динамічний характер полів.
Рей Фосс

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.