Skip to main content
kristinem68268172
New Participant
August 31, 2017
Question

Conditional required fields based on a response in a dropdown box

  • August 31, 2017
  • 2 replies
  • 19784 views

I am in need of assistance creating a javascript that will set fields to required based on a response in a drop down field. 

I have an "Action" dropdown field where the user selects the action the want "Add", "Delete", "Change", "Other".  In the event of "Add" selected I need certain fields required, in the event "Delete" is selected I need fewer fields to appear as required and so on.

I have seen some similar javascripts for radial button responses but have had difficulty translating.

This topic has been closed for replies.

2 replies

New Participant
October 19, 2023

Hello all, thanks for the helpful tips, but running into some issues with multiple conditional formatting. I am trying to have a conditional form fill where if you select a drop down item, it forces some fields to be required, and if you select other fields it simply is not required. I have followed the JS in these chats, but still do not require certain fields to be required properly. Also, when preparing the form, should the box for Required be checked or not on Properties screen for that each of these fields, or is the script essentially supposed to handle that automatically - I have tried both ways and no luck?

 

Goal is:

  1. IF Default - Bill Pay Check (3-7 Business Days) is selected, it does not require any of the f1-f5 fields to be filled in. 
  2. IF Expedited - Bill Pay ACH (2-3 Business Days) is selected, it does require all f1-f5 fields to be filled in
  3. IF Express - In House Wire (2 Business Days) is selected, it does require all f1-f5 fields to be filled in
  4. IF Overnight - In House Check and FedEx (1-2 Business Days) is selected, it does not require any of f1-f5 fields to be filled in. 

 

I thought I have the correct if/then statements below but It's definitely not functioning how I want.

 

Here's my script

var f1 = this.getField("Bank Name");
 
var f2 = this.getField("Account Name (Type)");
 
var f3 = this.getField("Account Number");
 
var f4 = this.getField("ABA Routing Wire");
 
var f5 = this.getField("ABA Routing ACH");
 
else if (event.value=="Default - Bill Pay Check (3-7 Business Days)") {
 
    f1.readonly = true;
 
    f2.readonly = true;
 
    f3.readonly = true;
 
    f4.readonly = true;
 
    f5.readonly = true;
 
    f1.required = false;
 
    f2.required = false;
 
    f3.required = false;
 
    f4.required = false;
 
    f5.required = false;
 
} else if (event.value=="Expedited - Bill Pay ACH (2-3 Business Days)") {
 
    f1.readonly = false;
 
    f2.readonly = false;
 
    f3.readonly = false;
 
    f4.readonly = false;
 
    f5.readonly = false;
 
    f1.required = true;
 
    f2.required = true;
 
    f3.required = true;
 
    f4.required = true;
 
    f5.required = true;
 
} else if (event.value=="Express - In House Wire (2 Business Days)") {
 
    f1.readonly = false;
 
    f2.readonly = false;
 
    f3.readonly = false;
 
    f4.readonly = false;
 
    f5.readonly = false;
 
    f1.required = true;
 
    f2.required = true;
 
    f3.required = true;
 
    f4.required = true;
 
    f5.required = true;
 
 
} else if (event.value=="Overnight - In House Check and FedEx (1-2 Business Days)") {
 
    f1.readonly = true;
 
    f2.readonly = true;
 
    f3.readonly = true;
 
    f4.readonly = true;
 
    f5.readonly = true;
 
    f1.required = false;
 
    f2.required = false;
 
    f3.required = false;
 
    f4.required = false;
 
    f5.required = false;
}
Nesa Nurani
Inspiring
October 20, 2023

You can't start with 'else if' so change first 'else if' into 'if'.

New Participant
October 23, 2023

Thanks @Nesa Nurani - unfortunately I have changed the first line to "if" and it's still not conditionally requiring fields to be filled out, or not required based on the needs. Here's the updated script:

 

var f1 = this.getField("Bank Name");

var f2 = this.getField("Account Name (Type)");

var f3 = this.getField("Account Number");

var f4 = this.getField("ABA Routing Wire");

var f5 = this.getField("ABA Routing ACH");

if (event.value=="Default - Bill Pay Check (3-7 Business Days)") {

f1.readonly = true;

f2.readonly = true;

f3.readonly = true;

f4.readonly = true;

f5.readonly = true;

f1.required = false;

f2.required = false;

f3.required = false;

f4.required = false;

f5.required = false;

} else if (event.value=="Expedited - Bill Pay ACH (2-3 Business Days)") {

f1.readonly = false;

f2.readonly = false;

f3.readonly = false;

f4.readonly = false;

f5.readonly = false;

f1.required = true;

f2.required = true;

f3.required = true;

f4.required = true;

f5.required = true;

} else if (event.value=="Express - In House Wire (2 Business Days)") {

f1.readonly = false;

f2.readonly = false;

f3.readonly = false;

f4.readonly = false;

f5.readonly = false;

f1.required = true;

f2.required = true;

f3.required = true;

f4.required = true;

f5.required = true;


} else if (event.value=="Overnight - In House Check and FedEx (1-2 Business Days)") {

f1.readonly = true;

f2.readonly = true;

f3.readonly = true;

f4.readonly = true;

f5.readonly = true;

f1.required = false;

f2.required = false;

f3.required = false;

f4.required = false;

f5.required = false;
}

Inspiring
July 3, 2018

I'm trying to develop something very similar: for the drop down, if one selects "Yes, I am", two text fields (already visible) will become required, and a third will become read-only.

If the selection is "No, I am not," the third text field will be required and the other two text fields will become read-only.

The dropdown selection-to-required field relationship seems very specific, as I haven't been able to adapt any of the solutions for other box types.

Thanks!

try67
Braniac
July 3, 2018

Use this code as the custom validation script of the drop-down field (adjust the field names as needed):

var f1 = this.getField("Field1");

var f2 = this.getField("Field2");

var f3 = this.getField("Field3");

if (event.value=="Yes, I am") {

    f1.readonly = false;

    f2.readonly = false;

    f3.readonly = true;

    f1.required = true;

    f2.required = true;

    f3.required = false;

} else if (event.value=="No, I am not") {

    f1.readonly = true;

    f2.readonly = true;

    f3.readonly = false;

    f1.required = false;

    f2.required = false;

    f3.required = true;

}

Make sure to tick the option to commit the selected value of the drop-down immediately (under the field's Properties, Options tab).

try67
Braniac
April 21, 2023

My apology if this has been covered. I created a pdf form for travel authorization with budget lines. It includes a drop down feature that requires one to select Yes or No. If the answer is Yes, I would like to add several budget lines and include the sum in a field called Advance. Can someone help me with the code for this and which tab would it go in? Really appreciate it.


What do you mean by "add several budget lines", exactly?