Safari自动填充错误忽略最大长度

时间:2011-09-12 17:36:26

标签: asp.net safari

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

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

VictimAddressPanel $地址$ $ CityNameItem txtCityName 123假街

VictimAddressPanel $地址$ $ ZipCodeItem txtZipCode 123假街

看起来因为外部容器中有“地址”这个词,所以Safari会变成OH!哦!!!这是街道地址。因此,它会在每个地址字段中填充用户的街道地址,包括邮政编码。现在,我还指定了AutoComplete的ASP.NET文本框属性并将其设置为“已禁用”这应该告诉浏览器,嘿虚拟,甚至不尝试填充此字段。 Safari忽略了它。最后,为了真正添加侮辱伤害,Safari也忽略了文本框的maxlength属性。即使你说某个字段的最大长度为2,如果你的自动填充信息中有100个字符,Safari会很乐意用100个字符填充该字段。可以想象,这会导致抛出数据库异常,因为字段长度太长。谁看过这个吗?有没有解决方法?

1 个答案:

答案 0 :(得分:0)

这是一个令人沮丧的问题。简单地更改名称以摆脱$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.
        }
    });    
});