在客户端启用/禁用RequiredValidator /不启动CustomValidator

时间:2010-04-23 14:44:47

标签: asp.net customvalidator requiredfieldvalidator

我有一个用户选择国家/地区的下拉列表。这是一个必需的“领域”。

在它旁边,有一个名为State的文本字段。如果用户选择US,则需要字段State。如果用户选择例如瑞典没有国家,因为瑞典没有州。

示例代码:

<asp:DropDownList runat="server" ID="Country"></asp:DropDownList>
<asp:RequiredFieldValidator ControlToValidate="Country"
                runat="server" Display="Static" ErrorMessage="Required field" />

<asp:TextBox runat="server" ID="State"></asp:TextBox>
<asp:CustomValidator ClientValidationFunction="DoesntGetFiredIfStateIsEmpty"
                runat="server" Display="Static" ErrorMessage="Required field" />

<!-- SO, RATHER THIS TOGETHER WITH CONDITIONAL FIRING -->
<asp:RequiredFieldValidator ControlToValidate="State"
                runat="server" Display="Static" ErrorMessage="Required field" />

我的问题是:如果CustomValidator为空,我该如何进行FireValidator火灾验证呢?

或者说更简单:如何有条件地使RequiredValidator发射?

或最简单:如何在客户端启用/禁用RequiredValidator?

2 个答案:

答案 0 :(得分:10)

尝试使用javascript启用和禁用验证器

ValidatorEnable(RequiredFieldValidatorId, false);

查看this question that I answered

答案 1 :(得分:1)

Asp.net具有用于管理验证器的客户端javascript函数,“ ValidatorEnable”函数,

ValidatorEnable(RequiredFieldValidatorId, false);

您可以简单地使用javascript来调用它,必须将验证器对象发送给函数(不仅是其ID)。

if (x==y) {
        ValidatorEnable($('#<%=rfvFamily.ClientID %>'), false);    
    } else {
        ValidatorEnable($('#<%=rfvFamily.ClientID %>'), true);
    }

if (x==y) {
        ValidatorEnable(document.getElementById("<%=rfvFamily.ClientID %>", false);    
    } else {
        ValidatorEnable(document.getElementById("<%=rfvFamily.ClientID %>", true);
    }

完整的documnet上: http://msdn.microsoft.com/en-us/library/Aa479045#aspplusvalid_clientside

另一种方法是在您的DropDownList CausesValidation =“ false”中进行设置,以避免在更改DropDownList条目时验证程序阻止回发。

(*)请记住,此功能用于客户端,要在服务器端禁用验证器,也必须在页面回发时禁用验证器。

if (IsPostBack){
    if (x==y) {
        rfvFamily.Enabled = false;
    }
}