2015-08-29 4 views
6

Я следовал рекомендациям, указанным в this other Stack Overflow post, и использовал шаблон, найденный в the list of regexes used by Chrome, но по какой-то причине Chrome по-прежнему не обнаруживает, что мое поле является полем кредитной карты.Ошибка автозаполнения кредитной карты Chrome

Safari обнаруживает это просто отлично.

Вот входной HTML, как показано на веб-инспектор:

<input class="control" id="card_number" type="tel" name="card_number" 
    value="" autocorrect="off" spellcheck="off" autocapitalize="off" 
    placeholder="Card number" data-reactid=".0.1.1.0.0.5.0.0" 
    x-autocompletetype="cc-number" autocompletetype="cc-number"> 

Да, как вы можете видеть из data-reactid, я использую React. Может быть, это имеет к этому какое-то отношение. Кто знает!

Я установил тестовую страницу, чтобы другие могли играть с ней. Вы можете посетить https://entire.life/payment-form-test в Safari, и (если у вас есть автозаполнение и сохраненная на нем кредитная карта), он появится. Если вы посетили его в Chrome, он не выберет опцию автозаполнения. Даже после ввода первой буквы вашей карты.

Этот код является открытым исходным кодом. Вы можете увидеть источник для /payment-form-test страницы here.

+1

Да, это странно.Здесь вы можете увидеть [рабочую демонстрацию] (https://greenido.github.io/Product-Site-101/form-cc-example.html), где CC# будет автозаполнен для вас в Chrome. Интересно, имеет ли он какое-либо отношение к вам, используя 'type =" tel ", но я бы не надеялся. – idbehold

+0

А это, похоже, стоило попробовать, @idbehold, но это не проблема. Я изменил его на 'type =" text "', но проблема не устранена. Это имеет смысл! Я скопировал атрибуты входного элемента, 'type =" tel "и все, из [Пример проверки Stripe] (https://stripe.com/docs/tutorials/checkout). Было бы странно, если бы это вызвало проблему для меня, а не для них! Мы должны искать не то место. : - / – chadoh

ответ

11

Это будет работать, если вы добавите следующие атрибуты соответствующих элементов ввода:

  • autocomplete="cc-number"
  • autocomplete="cc-exp"
  • autocomplete="cc-csc"

Также я заметил, что Chrome не будет автозаполнен, если отсутствует одно из полей cc.

Вы можете играть здесь - https://jsfiddle.net/q4gz33dg/2/

1

Назовите поля с пометкой card_expiry_month и card_expiry_year. Я не уверен, почему ваши текущие имена не вызывают регулярное выражение, но изменение имен, похоже, работает.

http://jsfiddle.net/7b6xtns7/ (это немного неаккуратно, так как он не оказал)

Edit: Похоже заказ должен сделать с ним тоже. Если это не работает, попробуйте немедленно положить месяц/дату после поля ввода номера

http://jsfiddle.net/c86Lmo0L/

0

Принятый ответ велик, думал, что я просто звонить в с документацией и запиской относительно React (помечено на этот вопрос) ..

Реагировать требуешь вы должны передать атрибут как autoComplete="cc-number" (обратите внимание на camelCase), в противном случае он по умолчанию будет autocomplete="off".

Подробнее:

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