tivo
tivo

Reputation: 146

Conditional Validation ASP.NET

I have 2 TextBoxes (textBoxA, textBoxB), both watched by their own RequiredFieldValidator. I want to 'enable' the RequiredFieldValidator for textBoxB just when textBoxA has a value (or meets some specific conditions).

Use cases:

Case 1 textBoxA = ""; -> Show Required Field Validation Message textBoxB = ""; -> Do not show validation message

Case 2 textBoxA = "has a value"; textBoxB = ""; -> Show Required Field Validation Message

Case 3 textBoxA = "has a value"; textBoxB = "has a value too";

Thanks for your help!!

Upvotes: 2

Views: 11031

Answers (4)

user55993
user55993

Reputation: 311

What I do is to change the Validation Group according to requirement, for example, you may assign the validation group to the textBoxB to a value different or the same that textBoxA.ValidationGroup & the submit control, this may be done in textBoxB's Onchange.

Validators which are evaluated are all that correspond to the same validation group of the submit control.

Upvotes: 0

Russ Cam
Russ Cam

Reputation: 125488

You might want to use a CustomValidator to do this. You'll need to implement the client side and server side validation. Something like (off the top of my head and untested)

Server side

protected void ServerValidation (object source, ServerValidateEventArgs args)
{      
   if (!string.IsNullOrEmpty(textBoxA))
       args.IsValid = !string.IsNullOrEmpty(textBoxB);

}

Client Side

function clientValidation(sender, args) {
    if (args.value !== "") {
       var textBoxB= document.getElementById('textBoxB');
       args.IsValid = (textBoxB.value !== "");
    }
    return;
}

Upvotes: 6

Rich
Rich

Reputation: 36806

I don't believe there's a declarative way to do it. I've always done this by having a ValidatePage method where I set my validators to enabled or disabled and then call Page.Validate at the end (and then proceed or render based on Page.IsValid).

So, either

validator2.IsEnabled = textBoxA.Text.Trim().Length > 0

or something like that.

That's pseudo code btw...I haven't done ASP.NET in some time now.

Upvotes: 0

Craig M
Craig M

Reputation: 5628

In this situation I'd use a CustomValidator for textBoxB instead of the required field validator. In the server side validation method you can control the exact nature of the validation with something like this.

if (textBoxA.Text != string.Empty)
{
    args.IsValid = textBoxB.Text != string.Empty;
}

Upvotes: 4

Related Questions