【问题标题】:Safari autofill bug ignoring max lengthsSafari自动填充错误忽略最大长度
【发布时间】:2011-09-13 02:10:59
【问题描述】:

我有一个封装地址的地址用户控件。具有您期望的常用地址字段。当使用 Safari 的用户访问该网站时,我一直收到错误消息,因为 Safari 的自动填充功能似乎完全被破坏了。

这是(几乎)实际向服务器发布数据的示例:

VictimAddressPanel$Address$CityNameItem$txtCityName 假街123号

VictimAddressPanel$Address$ZipCodeItem$txtZipCode 假街123号

似乎是因为外部容器中包含“地址”一词,所以 Safari 会运行 OH!!!!哦!!!那是街道地址。因此,它会在每个地址字段中填充用户的街道地址,包括邮政编码。现在,我还指定了 AutoComplete 的 ASP.NET 文本框属性并将其设置为“已禁用”,这应该告诉浏览器,嘿,笨蛋,甚至不要尝试填写此字段。 Safari 会忽略它。最后,为了真正雪上加霜,Safari 还忽略了文本框的 maxlength 属性。即使您说某个字段的最大长度为 2,如果您的自动完成信息中有 100 个字符,Safari 也会很高兴地用 100 个字符填充该字段。可以想象,由于字段长度太长,这会导致引发数据库异常。有没有人见过这个?有什么解决方法吗?

【问题讨论】:

  • 有没有运气弄清楚如何防止 Safari 忽略最大长度?

标签: asp.net safari


【解决方案1】:

这是一个令人沮丧的问题。最简单的方法可能是简单地更改名称以删除 $Address 部分以防止这种情况发生。否则你有一些选择。

选项一 - 验证您可以进行验证以进行限制。例如

<asp:TextBox ID="Zip" runat="server" MaxLength="5"></asp:TextBox>

<asp:RegularExpressionValidator ID="ZipVerify" runat="server"
  ControlToValidate="Zip"
  ErrorMessage="You may only have five characters in the zipcode."
  ValidationExpression="(\s|){0,5}$">
</asp:RegularExpressionValidator>

选项二 - 客户端您还可以添加在提交时触发的 JavaScript 验证以停止操作。下面是jQuery

$(document).ready(function () {
    $('form').submit(function () {
        // Verify your fields here
        if ($("Zip").length > 5) {
            //Do something here on error.
        }
    });    
}); 

【讨论】:

    猜你喜欢
    • 2015-12-12
    • 1970-01-01
    • 2022-10-20
    • 2012-04-20
    • 2023-04-03
    • 2015-08-29
    • 1970-01-01
    • 2020-05-15
    • 2011-02-13
    相关资源
    最近更新 更多