以下尝试在 IE8 中有效,但在 Firefox 中无效(不能为此使用 JQuery):
case 'Template:templateControl:residenceRBL2':
if (selected.value == 'Within USA')
{
/* Enable zip textbox and validator */
document.getElementById("Template_templateControl_zipTxt1").disabled=false;
ValidatorEnable(document.getElementById('<%=firstPersonZipReqVal.ClientID%>'),
true);
...
}
else if (selected.value == 'Outside USA')
{
/* Disable zip textbox and validator */
document.getElementById("Template_templateControl_zipTxt1").disabled=true;
ValidatorEnable(document.getElementById('<%=firstPersonZipReqVal.ClientID%>'),
false);
...
}
break;
<asp:Label ID="firstPersonZipLabel" Runat="server"></asp:Label><br />
<asp:TextBox ID="zipTxt1" Height="19" Width="100"
Runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="firstPersonZipReqVal"
ControlToValidate="zipTxt1" Display="Dynamic"
ErrorMessage="First Person Zip"
Runat="server">*</asp:RequiredFieldValidator>
问题描述:根据单选按钮列表选择,为文本框禁用/重新启用所需的验证器。基本上,如果他们的地址在美国境外,那么 zip 文本框验证器将被禁用。在 Firefox 中,这根本不起作用。
更新 1:09-07-2010 我在 Firefox 中禁用了文本框;我使用的是名称属性而不是 id。我现在唯一的问题是如何在 JS 中访问 ASP.NET 验证器控件的“ClientID”?
更新 2:09-07-2010 根据MSDN 文档,我想我可以这样做:
ValidatorEnable(firstPersonZipReqVal, false);
不幸的是,这似乎在 Firefox 中也不起作用......
ASP.NET 在 Firefox 中破坏了验证客户端代码的呈现
更新 3:2010 年 9 月 8 日
Firefox 表现不佳的原因是 ASP.NET 1.1 将其视为低级浏览器。如果我将 clientTarget="upLevel" 放在 Page 标记中,Firefox 会按预期工作。不幸的是,这破坏了整个网站的布局。有没有更渐进的方法来修复 Firefox 的 browsercaps? 这个版本的 browserCaps 也破坏了布局。
Web.Config 中的当前 browserCaps 如下所示:
<browserCaps>
<case match="Gecko/[-\d]+">
browser=Netscape
frames=true
tables=true
cookies=true
javascript=true
javaapplets=true
ecmascriptversion=1.5
w3cdomversion=1.0
css1=true
css2=true
xml=true
tagwriter=System.Web.UI.HtmlTextWriter
<case match="rv:1.0[^\.](?'letters'\w*)">
version=6.0
majorversion=6
minorversion=0
<case match="^b" with="${letters}">
beta=true
</case>
</case>
<case match="rv:1(\.\d+)(\.\d)?(?'letters'\w*)">
version=7.0
majorversion=7
minorversion=0
<case match="^b" with="${letters}">
beta=true
</case>
</case>
</case>
</browserCaps>
更新:2010 年 9 月 11 日
以下链接可能会提供答案;有人可以帮助提供 50 分的代码吗?