RequiredFieldValidator在隐藏时仍然有效

时间:2013-02-14 10:58:23

标签: asp.net validation

我有两个需要验证的字段,如果它们显示在屏幕上。表单最初加载时,它们将被隐藏,除非从DropDown框中选择一个项目,否则它们将保持隐藏状态。选择值后,将显示2个字段,然后验证工作正常。但是,如果选择了另一个不显示这两个字段的值,则它们仍在验证中,并且不允许页面提交。关于如何实现这一目标的任何想法?

function DisplayOutageDates() {
    if ($('#ddImpact').val() == "Service Affecting") { 
    $('#outageDates').css('display',''); 
    document.getElementById('txtOutageStartDate').Visible = true;
    document.getElementById('RFVOutageStartDate').Visible = true;
    } else {
    $('#outageDates').css('display','none');
    document.getElementById('txtOutageStartDate').Visible = false;
    document.getElementById('RFVOutageStartDate').Visible = false;
    }
}

<asp:RequiredFieldValidator ID="RFVOutageStartDate" runat="server" 
    ControlToValidate="txtOutageStartDate" SetFocusOnError="true"
    ErrorMessage="Please enter the Outage Start Date" />

2 个答案:

答案 0 :(得分:2)

您可以使用:

ValidatorEnable(val, enable): 
Takes a client-validator and a Boolean value. 
Enables or disables a client validator. 
Being disabled will stop it from evaluating and it will always appear valid. 

msdn上找到。

使用Javascript看起来像:

ValidatorEnable(document.getElementById('<%=Validator1.ClientID%>'), state);
//where state would be a boolean 

在JQuery中,这看起来像:

 ValidatorEnable($("#<%= Validator1.ClientID %>")[0], state);

在此处找到: http://codeclimber.net.nz/archive/2008/05/14/how-to-manage-asp.net-validation-from-javascript-with-jquery.aspx

答案 1 :(得分:1)

我猜您需要显示和隐藏Validator控件,以显示和隐藏输入控件。


<强>更新

如果使用Validator隐藏display:none;控件,它们仍会被渲染并参与验证过程。您需要通过将Visible属性设置为 false 来隐藏它们。通过这种方式,它们不会被渲染,也不会参与验证过程。