asp:基于条件的RequiredFieldValidator验证

时间:2013-05-28 11:37:52

标签: c# asp.net validation

我已经进行了如下验证,但仅在勾选复选框时才触发。

<!-- TextBox and its validator -->
Name: <asp:TextBox ID="TextBox1" runat="server" />

<asp:RequiredFieldValidator runat="server"
        ID="RequiredFieldValidator1" 
        Text="*"
        ErrorMessage="Name is required" 
        ControlToValidate="TextBox1" />

我可以使用asp:RequiredFieldValidator完成它吗? 我只想验证某个条件是否匹配 目前,每次点击“保存”按钮时都会进行验证。

5 个答案:

答案 0 :(得分:34)

改为使用自定义验证器:

<asp:CustomValidator ID="cv1" runat="server"
        ErrorMessage="Name is required"
        Text="*"
        ControlToValidate="TextBox1"
        ValidateEmptyText="True" 
        ClientValidationFunction="validate" />

和脚本(只是选中复选框和文本框值作为示例;您可以使用自定义逻辑):

<script type="text/javascript">
    function validate(s,args){
        if(document.getElementById("<%= checkboxId.ClientID %>").checked){
            args.IsValid = args.Value != '';

        }
        else{
            args.IsValid = true;
        }
    }
</script>

这将进行客户端验证。如果您还需要服务器验证,请在代码后面添加OnServerValidate属性和处理程序。 See here for details

答案 1 :(得分:9)

我通过在客户端添加以下javascript轻松解决了这个问题。

ValidatorEnable(document.getElementById("RequiredFieldValidator1"), true); or
ValidatorEnable(document.getElementById("RequiredFieldValidator2"), false);

答案 2 :(得分:0)

您也可以试试这个

protected void CheckBox_CheckedChanged(object sender, EventArgs e)
{

   if(CheckBox.Checked)
   {
       RequiredFieldValidator1.Enabled = true;
       RequiredFieldValidator1.ValidationGroup = "anything";
       Button1.ValidationGroup = "anything";// your save button

   }
   else
   {
       RequiredFieldValidator1.Enabled = false;
       RequiredFieldValidator1.ValidationGroup = string.Empty;
       Button1.ValidationGroup = string.Empty; // save button
   }
}

答案 3 :(得分:0)

试试这个......

protected void RequiredFieldValidator1_Load(object sender, EventArgs e)
{
     if (CheckBox1.Checked == true)
     {
         RequiredFieldValidator1.Enabled = true;
     }
     else if (CheckBox1.Checked == false)
     {
         RequiredFieldValidator1.Enabled = false;
     }
}

答案 4 :(得分:0)

您可以从Javascript / jQuery启用/禁用 RequiredFieldValidator 。 根据您的情况,当选中复选框时: - 只需调用javascript函数启用 RequiredFieldValidator ,并在取消选中时禁用RequiredFieldValidator。

对于其他条件,如下拉列表更改,文本框值更改和单选按钮选择更改,您可以分别调用onchange,onblur,onclick和 执行完所需条件后,您可以启用/禁用 RequiredFieldValidator

希望这对你有所帮助。