Organizational Research By

Surprising Reserch Topic

dynamically enable or disable requiredfieldvalidator based on value of dropdownl


dynamically enable or disable requiredfieldvalidator based on value of dropdownl  using -'asp.net,validation,requiredfieldvalidator'

I have an ASP.NET form with three text inputs, one each for "Work Phone", "Home Phone" and "Cell Phone". Each of these text inputs has a RequiredFieldValidator associated with it. I also have a DropDownList where the user can select the preferred phone type.

I want to only require the field that is selected in the DropDownList. For example, if the user selects "Work Phone" from the DropDownList, I want to disable the RequiredFieldValidator for "Home Phone" and "Cell Phone", thereby only making the "Work Phone" field required.

I have a method that enables and disables these validators based on the value of the DropDownList, but I cannot figure out when to call it. I want this method to run before the validation takes place on the page. How would I do that?
    

asked Sep 11, 2015 by GeoHaines
0 votes
8 views



Related Hot Questions

6 Answers

0 votes

Why not use a CustomValidator in this case? Turning off/on a RequiredFieldValidator could lead to a design issue in the future - I'd stick to using them on fields that are going to be required.

answered Sep 11, 2015 by FinlayZjvinj
0 votes

You can do this with JavaScript like this:

ValidatorEnable(RequiredFieldValidatorId, false);

Then have your drop down list use the onchange event (I'd suggest using jQuery)

$("#<%=dropDownList.ClientID %>").change(function(){
    var val = $(this).val();
    var skip = null;
    if (val == 1)
       skip = "workPhoneValidator";
    else if (val == 2)
       skip = "cellPhoneValidator";
    ....

    // by popular demand...
    var $skip = $("#" + skip)[0];

    if (skip != "workPhoneValidator") ValidatorEnable($skip, false);
    if (skip != "cellPhoneValidator") ValidatorEnable($skip, false);
    ....
});
answered Sep 11, 2015 by LatoyaKaufma
0 votes

OnChange event of the drop down you may have something like this

function EnableValidator(){
    ValidatorEnable(requiredFieldValidator, validatorMustBeEnabled);
} 

Check on this url. Section "Client-Side APIs"

http://msdn.microsoft.com/en-us/library/Aa479045#aspplusvalid_clientside

answered Sep 11, 2015 by ElliottEastw
0 votes

When you are using home phone, in dropdown selectedindexchange event, make the required field validators invisible.

like..

if homephone is selected,

homephonevalidator.visible=true
cellphonevalidator.visible=false
workphonevalidator.visible=false

if cellphone is selected,

homephonevalidator.visible=false
cellphonevalidator.visible=true 
workphonevalidator.visible=false

if workphone is selected,

homephonevalidator.visible=false
cellphonevalidator.visible=false
workphonevalidator.visible=true
answered Sep 11, 2015 by BudDevanny
0 votes

This is good way to enable and disable server side control validation from jquery event:





 

function EnableDisbledValidator(lblShow) {
    if (lblShow == "hide") {;
        ValidatorEnable($('#<%=rfvNote.ClientID %>')[0], false);

    } else {
        ValidatorEnable($('#<%=rfvNote.ClientID %>')[0], true);
    }
}
answered Sep 11, 2015 by AngWilliam
0 votes

Possible way would be:

  • Set in your DropDownList AutoPostBack="true"
  • In the SelectedIndexChanged event handler of the DropDownList enable/disable your validators
  • Set in your DropDownList CausesValidation="false" to avoid that the validators block a postback when you change the DropDownList entry.
answered Sep 11, 2015 by EstherBenedi

...