如何在隐藏时从ASP.NET验证中排除控件?
复选框用于在两个文本框之间切换。
NOT BOTH 需要其中一个
我希望在隐藏时禁用必填字段。
我知道enabled="false"
和visible="false"
会创建此行为,但我想保持jquery淡出动画。
我尝试将禁用的false属性添加到javascript但无法使其正常工作。 在线发现的其他解决方案似乎无法实现所需。
ASP.NET
<div class="Hide1">
<asp:TextBox ID="tb" runat="Server"/>
<asp:RequiredFieldValidator ID="rfv1" RunAt="Server" ControlToValidate="tb"/>
</div>
<div class="Hide2">
<asp:TextBox ID="tb2" runat="Server"/>
<asp:RequiredFieldValidator ID="rfv2" RunAt="Server" ControlToValidate="tb2"/>
</div>
<asp:Button ID="btn" runat="Server" Text="GO"/>
JQUERY
$('.tb').hide();
$('#CB').change(function () {
if ($(this).is(':checked')) {
$('.tb2').fadeOut(100, function () {
$('.tb').fadeIn();
});
} else {
$('.tb').fadeOut(100, function () {
$('.tb2').fadeIn();
});
}
});
答案 0 :(得分:2)
禁用必填字段验证器
document.getElementById('RequiredFieldValidator1').enabled=false;
启用必填字段验证器
document.getElementById('RequiredFieldValidator1').enabled=true;
答案 1 :(得分:1)
只需将控件的属性“CauseValidation”设置为“False”即可。 例如
<asp:TextBox ID="TextBox1" runat="server" CausesValidation="false"></asp:TextBox>
这必须在服务器端代码中完成。
希望这有帮助。
修改1
如果必须在javascrpt中完成..我认为应该在验证中检查控件的可见性
function validate()
{
if control is hidden
{ avoid validation
}
else
{validate
}
}
答案 2 :(得分:1)
您可以尝试这样的事情
if (document.getElementById('<%=CB.ClientID%>').checked) {
ValidatorEnable(document.getElementById('<%= rfv1.ClientID %>'), true);
ValidatorEnable(document.getElementById('<%= rfv2.ClientID %>'), false);
$('.tb2').fadeOut(100, function () {
$('.tb').fadeIn();
});
}
else {
ValidatorEnable(document.getElementById('<%= rfv1.ClientID %>'), false);
ValidatorEnable(document.getElementById('<%= rfv2.ClientID %>'), true);
$('.tb').fadeOut(100, function () {
$('.tb2').fadeIn();
});
}
注意: rfv1和rfv2是两个必需验证器的ID,请避免向验证者提供相同的ID。
更新
if (document.getElementById('<%=CB.ClientID%>').checked) {
ValidatorEnable(document.getElementById("#<%= rfv1.ClientID %>"), true);
ValidatorEnable(document.getElementById("#<%= rfv2.ClientID %>"), false);
$('.tb2').fadeOut(100, function () {
$('.tb').fadeIn();
});
}
else {
ValidatorEnable(document.getElementById("#<%= rfv1.ClientID %>"), false);
ValidatorEnable(document.getElementById("#<%= rfv2.ClientID %>"), true);
$('.tb').fadeOut(100, function () {
$('.tb2').fadeIn();
});
}