在某些形式中,Chrome自动填充会提示使用信用卡自动填充。
编辑:添加屏幕截图。这与浏览器自动完成功能不同。您无需在之前以相同的形式输入值。
我应该如何编写HTML表单,以便浏览器将其检测为信用卡字段并触发此行为?
使用Stripe表单的一个例子是理想的。
答案 0 :(得分:13)
从这个答案https://stackoverflow.com/a/9795126/292060开始,Chrome看起来要么匹配字段名称上的正则表达式模式,要么表单显式使用x-autocompletetype
属性,就像这样(此示例使用“somename”避免混淆与名称匹配的问题):
<input type="text" name="somename" x-autocompletetype="cc-number" />
实际上,您可以同时选择匹配的名称和x-autocompletetype:
<input type="text" name="ccnum" x-autocompletetype="cc-number" />
屏幕截图中是否有输入框的视图来源?这将显示它是否与名称或x-autocompletetype属性匹配。
我链接的答案有几个链接以获取更多信息;我没有在这里重复它们。
其他一些评论:
我知道Chrome会提出一个问题,即是否保存信用卡信息(我没有),但我不知道它是否会弹出这个问题而不管它是如何检测到的。也就是说,我不确定Chrome是否会自动填写单独的信用卡字段以及其他字段,或者是否需要将整个信息保存为信用卡。
你的问题是怎么做,而不是是否。但是根据您提问中的评论,我同意您可能不想自动填写信用卡字段。我个人觉得它发生时会感到不安,甚至在我的浏览器中知道它是本地的(我特别感觉CVV的这种方式,并且当我报告它时会产生惊人的阻力)。但是,有些帖子发现,当客户想要使用它时,Chrome设置了信用卡,并且网站阻止了它。
答案 1 :(得分:10)
感谢@goodeye指导我找到正确答案。
要触发信用卡自动填充,
Here是Chrome用于触发检测的正则表达式的链接
答案 2 :(得分:9)
这个问题很老了,但我有一个 2017年更新答案!
您现在可以通过正确命名<input>
来告诉您的浏览器哪些字段用于信用卡信息。
以下答案来自我原来的答案:https://stackoverflow.com/a/41965106/1696153
Here's a link to the official current WHATWG HTML Standard for enabling autocomplete.
Google编写了pretty nice guide用于开发对移动设备友好的网络应用程序。他们有一节介绍如何在表单上命名输入以轻松使用自动填充。虽然它是为移动设备编写的,但这适用于桌面和移动设备!
以下是有关如何启用自动填充功能的一些要点:
<label>
个字段使用<input>
autocomplete
代码中添加<input>
属性,然后使用此guide填写。name
代码正确命名autocomplete
和<input>
属性 <强> 实施例 强>:
<label for="frmNameA">Name</label>
<input type="text" name="name" id="frmNameA"
placeholder="Full name" required autocomplete="name">
<label for="frmEmailA">Email</label>
<input type="email" name="email" id="frmEmailA"
placeholder="name@example.com" required autocomplete="email">
<!-- note that "emailC" will not be autocompleted -->
<label for="frmEmailC">Confirm Email</label>
<input type="email" name="emailC" id="frmEmailC"
placeholder="name@example.com" required autocomplete="email">
<label for="frmPhoneNumA">Phone</label>
<input type="tel" name="phone" id="frmPhoneNumA"
placeholder="+1-555-555-1212" required autocomplete="tel">
<input>
代码要触发自动填充,请确保在name
标记中正确命名autocomplete
和<input>
属性。这将自动允许表单上的自动填充。确保还有一个<label>
!也可以找到此信息here。
以下是如何为输入命名:
name
中的任何一个:name fname mname lname
autocomplete
中的任何一个:
name
(全名)given-name
(名字)additional-name
(中间名)family-name
(姓氏)<input type="text" name="fname" autocomplete="given-name">
name
中的任何一个:email
autocomplete
中的任何一个:email
<input type="text" name="email" autocomplete="email">
name
中的任何一个:address city region province state zip zip2 postal country
autocomplete
中的任何一个:
street-address
address-line1
address-line2
address-level1
(州或省)address-level2
(城市)postal-code
(邮政编码)country
name
中的任何一个:phone mobile country-code area-code exchange suffix ext
autocomplete
中的任何一个:tel
name
中的任何一个:ccname cardnumber cvc ccmonth ccyear exp-date card-type
autocomplete
中的任何一个:
cc-name
cc-number
cc-csc
cc-exp-month
cc-exp-year
cc-exp
cc-type
name
中的任何一个:username
autocomplete
中的任何一个:username
name
中的任何一个:password
autocomplete
中的任何一个:
current-password
(用于登录表单)new-password
(用于注册和密码更改表单)答案 3 :(得分:1)
Chrome在输入中使用autocomplete
属性进行自动填充。如果将来尚未使用,将来可能会被其他浏览器使用。
autocomplete
的实际用法是通过指定autocomplete="off"
来说明是否启用了自动完成功能。但是chrome使用相同的自动填充功能。
自动填充和自动完成是不同的,所以请不要感到困惑。
自动填充是chrome用来根据chrome浏览器中自动填充设置中存储的内容填充表单的方法。
自动完成是所有浏览器用来记住您以前输入的内容(通过在输入时建议输入值)来记住的内容。因此,当您在输入上使用autocomplete="off"
时,浏览器将停止建议这些值。
返回解决方案,要进行自动填充,请使用cc-number
作为卡号,cc-name
作为持卡人的姓名,cc-csc
代表cvc,cc-exp
代表卡的到期日期在您的autocomplete
属性中。
这是与chrome自动填充兼容的示例:
<label for="frmNameCC">Name on card</label>
<input name="ccname" id="frmNameCC" required placeholder="Full Name" autocomplete="cc-name">
<label for="frmCCNum">Card Number</label>
<input name="cardnumber" id="frmCCNum" required autocomplete="cc-number">
<label for="frmCCCVC">CVC</label>
<input name="cvc" id="frmCCCVC" required autocomplete="cc-csc">
<label for="frmCCExp">Expiry</label>
<input name="cc-exp" id="frmCCExp" required placeholder="MM-YYYY" autocomplete="cc-exp">
来源:https://developers.google.com/web/updates/2015/06/checkout-faster-with-autofill
答案 4 :(得分:0)
Chrome浏览器还会扫描占位符。
示例:<input placeholder='dd-mm-yyyy'/>
将触发它成为信用卡字段。