我有一个封装地址的地址用户控件。是否有您期望的常用地址字段。当Safari的用户访问该网站时,我一直收到错误,因为Safari的自动填充似乎完全彻底破坏了。
这是(几乎)实际发布到服务器的数据的示例:
VictimAddressPanel $地址$ $ CityNameItem txtCityName 123假街
VictimAddressPanel $地址$ $ ZipCodeItem txtZipCode 123假街
看起来因为外部容器中有“地址”这个词,所以Safari会变成OH!哦!!!这是街道地址。因此,它会在每个地址字段中填充用户的街道地址,包括邮政编码。现在,我还指定了AutoComplete的ASP.NET文本框属性并将其设置为“已禁用”这应该告诉浏览器,嘿虚拟,甚至不尝试填充此字段。 Safari忽略了它。最后,为了真正添加侮辱伤害,Safari也忽略了文本框的maxlength属性。即使你说某个字段的最大长度为2,如果你的自动填充信息中有100个字符,Safari会很乐意用100个字符填充该字段。可以想象,这会导致抛出数据库异常,因为字段长度太长。谁看过这个吗?有没有解决方法?
答案 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.
}
});
});