Формат автозаполнения срока действия кредитной карты Chrome - PullRequest
0 голосов
/ 30 августа 2018

У меня есть форма для ввода кредитной карты на сайте, который я поддерживаю. Внутренний код закодирован так, чтобы принимать двухзначный месяц истечения и двухзначный год в формате MM / YY. Похоже, что Chrome настроен на применение информации о кредитной карте в формате MM / YYYY, и поэтому, если у пользователя есть сохраненный CC с истечением 05/2023, он будет автоматически заполняться 05/20 и из-за маскирования ввода jquery обрежет 23 части. , Это приводит к отклонению платежа, который никто не хочет.

Вот основной пример формы.

<form action="/">
  <h3>Label</h3>
  <div>
    <input name="CardHolderName" placeholder="Cardholder Name" type="text">
  </div>
  <div>
    <input name="CreditCardNumber" placeholder="Credit Card Number" type="tel">
  </div>
  <div>
    <label for="ExpirationDate">Expirion Date</label>
    <input id="ExpirationDate" name="ExpirationDate" placeholder="MM/YY" type="tel">
  </div>
  <div>
    <input name="Cvv2" placeholder="CVC" type="tel">
  </div>
</form>

Я отсканировал https://wiki.whatwg.org/wiki/Autocomplete_Types и https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill и нашел autocomplete = "cc-exp", а также некоторые рекомендации по формату.

В более старой спецификации, которая устарела, формат несколько совпадает с тем, что делает Chrome, упоминая формат MM / YYYY, когда maxlength = "7". В этом случае maxlength = "5" должно дать мне то, что я хочу, но это не соответствует. Например, добавление maxlength = "5" работает в моем jsfiddle, но не работает на нашем веб-сайте. Однако добавление autocomplete = "cc-exp" и maxlength = "5" работает на веб-сайте с настольным Chrome, но не с Chrome на Android, как кажется. Chrome на моем телефоне Andrid по-прежнему автоматически заполняется с помощью MM / YYYY.

Более новая спецификация говорит, что форматом является ГГГГ-ММ, который не соответствует тому, что делает Chrome и, следовательно, бесполезен. Нет никаких упоминаний о каком-либо другом принятом формате.

Эта скрипка (https://jsfiddle.net/JonathanN/j054kbgx/) показывает все производные от моей исходной формы и все результаты, которые я видел. Было бы здорово, если бы был 100% гарантированный способ сообщить браузеру, что формат MM / YY. В противном случае было бы полезно иметь больше информации о том, как эти формы работают для других людей.

1 Ответ

0 голосов
/ 20 сентября 2018

Я столкнулся с той же проблемой - проверил спецификацию Chrome на автозаполнение и добавил autocomplete="cc-exp-year" в поле формы, исправил это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...