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

Posted

技术标签:

【中文标题】ASP.NET 为信用卡字段禁用 Chrome 自动填充【英文标题】:ASP.NET Disable Chrome Autofill for for Credit Card fields 【发布时间】:2019-03-05 03:19:31 【问题描述】:

我想知道是否有任何方法可以禁用信用卡信息的自动填充功能。据我所知,autocomplete"off" 属性不适用于 CC 选项。我也试过用:autocomplete="doNotAutoComplete"

目前文本框如下所示:

<asp:TextBoxID="_creditCardHolderNameTextBox"runat="server" MaxLength="100"/>

我已经想到了两种常见的解决方案,将 ID 重命名为 Chrome 无法获取的随机 ID,但我不想这样做有两个原因: 1)这只是不好的做法 2) 代码中有很多东西使用这个文本框并重命名它都会导致大量错误并且很快就会变得非常混乱。

另一件事是创建“假”CC 输入,正如 Mike Nelson 在这篇文章中提到的那样:Disabling Chrome Autofill

唯一的问题是我目前正在使用的代码使用转发器来生成表单,它也非常混乱和不稳定。

有什么想法吗?

【问题讨论】:

我发现自己想知道这个用例。自动填充是一种浏览器设置,因此听起来您的应用程序正在尝试控制客户端行为。一般来说,这会导致令人沮丧的用户体验。 虽然我同意你的观点,在 99% 的情况下它应该保留,但在我们的情况下,我们的政策是由第三方为客户编写的,显然由于以下原因而出现了一些问题这。此外,作为一项商业决策和作为初级开发人员,这有点超出我的掌控 我听到了。提出这个问题的另一种方法是,您试图通过禁用自动填充来解决什么问题?答案可以确定哪些方法是合适的。 【参考方案1】:

更新: 万一有人想知道我找到了几个解决这个问题的方法。

Google 根据以下因素将字段定义为信用卡输入:进行输入的标签、输入的 id 和名称属性(如果适用)。

所以简而言之,最快最简单的解决方案就是将 id、name 和 label 更改为与 CC 详细信息无关的内容。

对于标签,我发现最简单的解决方案是在每个单词周围加上标签,例如

<label>Credit</label> <label>Card</label> <label>Number:</label>

(非常草率的解决方案,但完成了工作)

第二个问题是 id 和 name,为此我发现最好的解决方案是使用动态更改这些的脚本,然后在提交表单之前将它们传回。 查看 Terry Lin (terrylinooo) 编写的这个很棒的 Jquery 脚本!

https://terrylinooo.github.io/jquery.disableAutoFill/

【讨论】:

以上是关于ASP.NET 为信用卡字段禁用 Chrome 自动填充的主要内容,如果未能解决你的问题,请参考以下文章

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

使用 ASP.NET MVC 进行信用卡支付(有卡、刷卡)

编辑网格时,如何按行禁用特定字段? Kendo UI ASP.Net MVC 包装器

Chrome 如何检测信用卡字段?

Chrome 是不是更改了检测信用卡字段的方式? [复制]

ASP .NET MVC在每个字段级别禁用客户端验证