asp.net required field validator for at least one textbox contains text

前端 未结 2 1226
温柔的废话
温柔的废话 2020-12-10 06:04

I have three textboxes on an asp.net webform, how/can I use a required field validator to ensure that at least one of them contains text?

相关标签:
2条回答
  • 2020-12-10 06:35

    I don't think a RequiredFieldValidator fits your requirements. I would go with a CustomValidator assigned to any of your fields and manually check them all when it fires.

    <script>
        function doCustomValidate(source, args) {
    
            args.IsValid = false;
    
            if (document.getElementById('<% =TextBox1.ClientID %>').value.length > 0) {
                args.IsValid = true;
            }
            if (document.getElementById('<% =TextBox2.ClientID %>').value.length > 0) {
                args.IsValid = true;
            }
            if (document.getElementById('<% =TextBox3.ClientID %>').value.length > 0) {
                args.IsValid = true;
            }
        }
    </script>
    
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
    <asp:CustomValidator ID="CustomValidator1" runat="server" 
             ErrorMessage="have to fill at least 1 field" 
             ControlToValidate="TextBox1" 
             ClientValidationFunction="doCustomValidate"
             ValidateEmptyText="true" ></asp:CustomValidator><br />
    <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox><br />
    <asp:TextBox ID="TextBox3" runat="server"></asp:TextBox><br />
    

    Don't forget to set ValidateEmptyText="true" as the default is to skip empty fields. make sure you create a similar server-side validation method as well.

    0 讨论(0)
  • 2020-12-10 06:56

    I would use a CustomFieldValidator like this:

    <asp:CustomValidator runat="server"
             ID="MyCustomValidator"
             ValidationGroup="YOUR_VALIDATION_GROUP_NAME"
             OnServerValidate="MyCustomValidator_ServerValidate"
             ErrorMessage="At least one textbox needs to be filled in." />
    

    and then in your codebehind you have:

    protected void MyCustomValidator_ServerValidate(object source, ServerValidateEventArgs args)
    {
         if (/* one of three textboxes has text*/)
             args.IsValid = true;
         else
             args.IsValid = false;
    }
    

    You can also add a Client-side component to this validation, and make it sexy by extending it with AJAX toolkit's ValidatorCalloutExtender control.

    0 讨论(0)
提交回复
热议问题