cc-exp 的 Safari 自动完成功能不起作用

Posted

技术标签:

【中文标题】cc-exp 的 Safari 自动完成功能不起作用【英文标题】:Safari autocomplete for cc-exp not working 【发布时间】:2017-05-16 23:00:25 【问题描述】:

我正在尝试让信用卡表单上的自动完成功能在 Safari 中正常工作,但它似乎完全忽略了到期日期的自动完成功能。无论我使用 cc-exp 还是单独的 cc-exp-month/cc-exp-year,都不起作用。不过,cc-name 和 cc-number 的自动完成功能正常工作,Chrome 中的事情也正常工作。

我已经能够将问题归结为一个非常简单的例子:

<form>
  <input type="text" autocomplete="cc-name" placeholder="name" />
  <input type="text" autocomplete="cc-number" placeholder="number" />
  <input type="text" autocomplete="cc-exp" placeholder="expiration" />
  <input type="text" autocomplete="cc-csc" placeholder="cvc" />
</form>

我在这里缺少什么?我已经尝试过使用 ID、名称和 x-autocompletetype 的旧语法。都没有任何成功。在 Safari 7 到 10 上测试过,所以这个问题似乎存在了一段时间,或者我真的错过了一些明显的东西?

(注意:要测试上面的示例,请确保您通过 https 访问此页面,否则无论如何它都不起作用)

【问题讨论】:

这里有同样的问题。好像是 safari bug 你有没有想过这个问题? 不,从未找到解决方案。这让我觉得我做错了什么,因为这是许多 Safari 浏览器的问题。 【参考方案1】:

我只是在寻找解决方案,并注意到在我什至没有自动完成属性的旧表单上,它可以工作。表单之间的区别在于,在旧表单上,我使用 2 个下拉字段(SELECT 标记)来表示 MM 和 YYYY 格式的到期月份和年份。

在尝试了不同的选项后,我得出的结论是 Safari 需要 2 个单独的字段,一个用于 MM,一个用于 YYYY。我现在有 2 个这样的文本字段:

<input type="text" name="CCExpiryMonth" id="CCExpiryMonth" value="" placeholder="MM" autocomplete="cc-exp">
<input type="text" name="CCExpiryYear" id="CCExpiryYear" value="" placeholder="YYYY" autocomplete="cc-exp"> 

这适用于 Safari。

【讨论】:

点评来源: 请EDIT 你的答案并修复它,而不是发布几个 cmets。然后,从答案中删除您的 cmets。请参阅:How do I write a good answer?。

以上是关于cc-exp 的 Safari 自动完成功能不起作用的主要内容,如果未能解决你的问题,请参考以下文章

为啥闪烁自动完成会离开单词的开头

HTML 输入自动完成在 WKWebview 中不起作用

视频循环自动播放在 Chrome/safari 上不起作用(webkit 错误)

iOS Safari 如何禁用类似自动完成的功能

使用dwr后,javaweb设置的session超时失效,web.xml和tomcat设置都不起作

Javascript 自动完成功能在 ascx 中不起作用