如何在隐藏字段(TextBox)上触发RequiredFieldValidator

时间:2011-04-19 00:36:25

标签: asp.net validation

我认为这是一个常见问题。我有一个表单,我使用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);
  });
});

希望它会让某人的生活更轻松

2 个答案:

答案 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

}

这将解决您的问题