我认为这是一个常见问题.我有一个表单,我使用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); }); });
希望它会让某人的生活更轻松
解决方法
如果我没记错的话,有一个叫做ValidatorEnable(validatorClientId,isEnabled)的函数允许你通过javascript禁用/启用ASP.NET验证器.您可以在表单提交之前使用jQuery来禁用所有不可见的验证器.
这里有一些关于客户端API的文档,可以从http://msdn.microsoft.com/en-us/library/aa479045.aspx的验证器获得