代码之家  ›  专栏  ›  技术社区  ›  Simeon

启用/禁用客户端上的RequiredValidator/CustomValidator未激发

  •  6
  • Simeon  · 技术社区  · 16 年前

    我有一个下拉列表,用户可以在其中选择一个国家。它是必需的“字段”。

    在它旁边,有一个名为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为空时,如何使它触发验证?

    或者简单地说:我如何使一个必需的验证器有条件地触发?

    或者最简单:如何在客户端启用/禁用所需的验证器?

    2 回复  |  直到 7 年前
        1
  •  10
  •   Community Mohan Dere    9 年前

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

    ValidatorEnable(RequiredFieldValidatorId, false);
    

    退房 this question that I answered .

        2
  •  1
  •   Zakaria Habibi    7 年前

    ASP.NET有一个客户端javascript函数来管理验证器,“validatoreable”函数,

    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);
        }
    

    完整文档网络: http://msdn.microsoft.com/en-us/library/Aa479045#aspplusvalid_clientside

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

    (*)请记住,此函数用于客户端,要在服务器端禁用验证器,还必须在回发页面上禁用验证器。

    if (IsPostBack){
        if (x==y) {
            rfvFamily.Enabled = false;
        }
    }
    
    推荐文章