未触发 Chrome 信用卡自动填充

Posted

技术标签:

【中文标题】未触发 Chrome 信用卡自动填充【英文标题】:Chrome credit card autofill not being triggered 【发布时间】:2015-11-24 04:52:21 【问题描述】:

我遵循了this other Stack Overflow post 中的建议并使用了the list of regexes used by 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。也许这与它有关。谁知道呢!

我设置了一个测试页面,以便其他人可以使用它。您可以在 Safari 中访问https://entire.life/payment-form-test,并且(如果您启用了自动填充并保存了信用卡),它将弹出。如果你在 Chrome 中访问它,它不会弹出自动填充选项。即使在输入卡片的第一个字母之后也是如此。

此代码是开源的。您可以查看/payment-form-test 页面here 的来源。

【问题讨论】:

是的,这很奇怪。您可以看到 working demo here,其中 CC# 将在 Chrome 中为您自动完成。我想知道这是否与您使用type="tel" 有任何关系,但我希望不会。 啊,这似乎值得一试,@idbehold,但这不是问题所在。我将其更改为type="text",但问题仍然存在。这是有道理的!我从Stripe's Checkout example 复制了输入元素属性type="tel" 和所有属性。如果它给我而不是他们造成了问题,那就太奇怪了!我们一定是找错地方了。 :-/ 【参考方案1】:

将您的过期字段命名为 card_expiry_monthcard_expiry_year。我不确定为什么您当前的名称不会触发正则表达式,但更改名称似乎有效。

http://jsfiddle.net/7b6xtns7/(因为没有渲染所以有点乱)

编辑: 看起来订购也与它有关。如果这不起作用,请尝试将月份/日期紧跟在数字输入字段之后

http://jsfiddle.net/c86Lmo0L/

【讨论】:

【参考方案2】:

如果您将以下属性添加到相应的输入元素,它将起作用:

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

我还注意到,如果缺少 cc 字段之一,Chrome 将不会自动完成。

你可以在这里玩 - https://jsfiddle.net/q4gz33dg/2/

【讨论】:

似乎是“我还注意到,如果缺少 cc 字段之一,Chrome 将不会自动完成。”不再相关,只是在 jsfiddle 上进行了测试 - cc-number 的自动完成在独自一人时可以正常工作。【参考方案3】:

接受的答案很好,我想我只是附上一些文档和关于 React 的注释(标记为这个问题)..

React 要求你将属性传递为autoComplete="cc-number"(注意camelCase),否则默认为autocomplete="off"

更多信息:

反应属性:https://facebook.github.io/react/docs/tags-and-attributes.html 有用的例子:https://developers.google.com/web/updates/2015/06/checkout-faster-with-autofill https://html.spec.whatwg.org/multipage/forms.html#autofill

【讨论】:

以上是关于未触发 Chrome 信用卡自动填充的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET 为信用卡字段禁用 Chrome 自动填充

Chrome 如何检测信用卡字段?

如何禁用 iOS Chrome 密码/信用卡自动填充?

谷歌浏览器自动填充功能怎么用

如何让 Safari 自动填充信用卡到期日期月/年选择标签?

Magento 2 - 在 Braintree 信用卡表格中添加自动填充