我认为这是一个常见问题。我有一个表单,我使用jQuery动态显示/隐藏字段,具体取决于一些单选按钮。
我在所有字段上都有RequiredFieldValidator,但如果隐藏了ControlToValidate(使用jQuery),我不希望它们被触发。
这可能吗?提前谢谢。
编辑:这是解决方案,感谢Marek。如果你因为MasterPages而有奇怪的clientID,那可能不是很明显
这是ASPX
<asp:TextBox ID="txtName" runat="server" />
<asp:RequiredFieldValidator ID="vldName" ControlToValidate="txtName" runat="server" ErrorMessage="You must enter Name!" />
...
<asp:Button ID="btnSubmit" runat="server" Text="Submit" />
这是jQuery
$(function() {
$('#ctl00_cphContent_btnSubmit').click(function() {
if (!$('#ctl00_cphContent_txtName').is(':visible'))
ValidatorEnable(ctl00_cphContent_vldName, false);
});
});
希望它会让某人的生活更轻松
答案 0 :(得分:4)
如果我没记错的话,有一个名为ValidatorEnable(validatorClientId, isEnabled)
的函数允许你通过javascript禁用/启用ASP.NET验证器。您可以在表单提交之前使用jQuery来禁用所有不可见的验证器。
有一些关于客户端API的文档可以从http://msdn.microsoft.com/en-us/library/aa479045.aspx
中的验证器获得答案 1 :(得分:0)
当你从C#代码设置visiblility时,你可以设置控件来验证C#代码的属性。这将解决你的问题。
if ($('#input-name').length) {
// do something
}
这将解决您的问题