Skip to main content
March 17, 2021
Answered

How to populate different dropdown list based on selection of a value in another dropdown field?

  • March 17, 2021
  • 8 replies
  • 18276 views

Hi there,

I'm trying to create a fillable form in Acrobat Pro where I select a  value in dropdown field A, dropdown field B will only display a list of values pertaining to the value in A.

Thanks.

This topic has been closed for replies.
Correct answer Nesa Nurani

Use setItems() to populate dropdown field, here is an example code:

if(event.value == "Item1")
this.getField("Dropdown2").setItems(["Item 1","Item 2","Item 3"]);
else if(event.value == "Item2")
this.getField("Dropdown2").setItems(["Item 4","Item 5","Item 6"]);
else this.getField("Dropdown2").clearItems();

You can also give items an export value like this:

setItems([["Item 1", "1"], ["Item 2", "2"], ["Item 3", "3"]]);

8 replies

Participant
November 6, 2023

I have a similar issue - I'm getting a SyntaxError: missing] after element list 6: at line 7 - this is my code (I have 3 dropdown lists)

 

if(event.value == "55+"){
this.getField("Calendar").setItems(["General Interest","Health and Wellness"]);
this.getField("Service").setItems(["Book Club","Bridge", "Brain Health Service", "Workshops"]);}
else if(event.value == "Adults"){
this.getField("Calendar").setItems(["Arts - Music","Fitness"]);
this.getField("Service").setItems(["Guitar","Piano Private Lessons", "Dance Fitness", Walking and Running]);}
else if(event.value == "Children"){
this.getField("Calendar").setItems(["General Interest","Fitness"]);
this.getField("Service").setItems(["Book Club","Dance Fitness", "Socials", "Yoga"]);}
else{
this.getField("55+").clearItems();
this.getField("Adults").clearItems();}

 

try67
Community Expert
Community Expert
November 6, 2023

Use a code editor with syntax highlighting and the error will be very evident:

 

 

This screenshot is from Notepad++, which I highly recommend.

Participant
November 6, 2023

Thank you for the speedy response. Unfortunately due to my company's security protocols, I'm not able to download any programs onto my computer :(. But I did find where I forgot to add in quotation marks around "Walking and Running" and once I did that, it seems to work. Thank you again for your help 🙂

Participant
September 19, 2023

I am getting an error of "SyntaxError: Illegal Character 1: at line 2" Could I please request assistance, it is occuring on "else if(event.value == “Aviation”)" line?

 

if(event.value == “Warfare”) this.getField(“Workgroup").setItems([“NPC","BM","CD","CSM","CSMMW","HSM"] );

else if(event.value == “Aviation”)

this.getfield(“Workgroup”).setItems([“ATA”,“ATV”,“AVN”,“A”]);

else this.getfield(event.value == “Engineering”)

this.getfield(“Workgroup”).setItems( ["MT","ET","ETSM","MTSM"] ); .

else if(event.value == “Information Warfare”)

this.getfield(“Workgroup”).setItems( ["CIS","EW","IS","CTS","CTL","CT-MCW"] );

else if(event.value == “Submarines”)

this.getfield(“Workgroup”).setItems( ["AWA","CIS","EW","MT","ET"] );

else if(event.value == “Logistics”)

this.getfield(“Workgroup”).setItems ( ["ML-C","ML-S","ML-C","MED","DEN"] );

else if(event.value == "Personnel")

this.getfield(“Workgroup”).setItems ( ["MPM","MUSN","PTI"] );

Nesa Nurani
Community Expert
Community Expert
September 20, 2023

In this line it should be 'else if' not 'else':

else this.getfield(event.value == “Engineering”)

Also in that line and some others you are using wrong quotes, instead of “” use these "".

Participant
September 20, 2023

Thank you for your prompt response, I have corrected as advised however this dose not do anything, to confirm this script is under the first drop down, which then should change the selections available on the drop down below it? (Dose the second drop down need to contain anything or dose it need to contain all possible selection?)

 

I am also placing the script in Validate, Run custom validation script?

 

if(event.value == "Warfare")

this.getfield("Workgroup").setItems(["NPC", "BM","CD", "CSM", "CSMMW", "HSM"]);

else if(event.value == "Aviation")

this.getfield("Workgroup").setItems(["ATA", "ATV", "AVN", "A"]);

else if(event.value == "Engineering")

this.getfield("Workgroup").setItems( ["MT", "ET", "ETSM", "MTSM"] );

else if(event.value == "Information Warfare")

this.getfield("Workgroup").setItems( ["CIS", "EW", "IS", "CTS", "CTL", "CT-MCW"] );

else if(event.value == "Submarines")

this.getfield("Workgroup").setItems( ["AWA", "CIS", "EW", "MT", "ET"] );

else if(event.value == "Logistics")

this.getfield("Workgroup").setItems ( ["ML-C", "ML-S", "ML-SC", "MED", "DEN"] );

else if(event.value == "Personnel")

this.getfield("Workgroup").setItems ( ["MPM", "MUSN", "PTI"] );

else this.getField(" ").clearItems();

Participant
April 1, 2023

With your exact script, I tried to recreate it.

this if event.value equals "Item1".

getField("Dropdown2").

if (event.value == "Item2") this; else setItems(["Item 1","Item 2","Item 3"]).

getField("Dropdown2").

setItems(["Item 4"," "Item 5"," "Item 6"]); alternatively, this.

getField("Dropdown2").

clearItems(); one has two dropdown menus. Dropdowns 1 and 2
The script that Dropdown2 added.

It appears to only run:

Nesa Nurani
Community Expert
Community Expert
April 1, 2023

I think you try to achieve something like this:

var drop2 = this.getField("Dropdown2");

if(event.value == "Item1")
drop2.setItems(["Item 1","Item 2","Item 3"]);

else if(event.value == "Item2")
drop2.setItems(["Item 4","Item 5","Item 6"]);

else
drop2.clearItems();
Participating Frequently
April 1, 2023

if IT-"AOS/Unit Data/Position Data,"Access/Security","Alert/Audit","Assignments","Awards","Benefits","Contracts","Help Desk/CRM/FAQ/KB","IPPS-A INTERNAL ACCESS REQUEST","IPPS-A Training / ELM","Job Data","MILPAY","Mobile App","On/Off Boarding","Orders Framework","Personnel Action Request / PAR","Physical Profiles","Production Support","Profile Management","promotions","R3 Cutover Support","R3 Training RFI","Readiness & Manning (HCM)","Reductions","Reports / Analytics","Restrictions","SICOOP (formerly SIHOL)","SRB","SSI-Cadre and Students ONLY","System Preformance","Talent Management","Trading Partners (Into IPPS-A)","Trading Partners (Out IPPS-A)","User Interface / Homepage","Workflow"

if HR-"AOS/Unit Data/Position Data,"Access/Security","Accessions","Awards","Benefits","Career Management","Change Request","Enhancement Request","Evaluations","HRC Tier 1 Use Only","IPPS-A HR Processes","IPPS-A Knowledge Base","IPPS-A Technical Issues","Job Data","Misrouted Case","Pay & Allowences","Promotions & Selections","R3 Training Rfi","Record Management","SSI-Cadre & Students Only"

Participating Frequently
April 1, 2023

I cannot get this to work for the life of me. I create the code but my second drop down does not populate the options?

 

Nesa Nurani
Community Expert
Community Expert
April 1, 2023

You are missing some things and have errors, let's say your second dropdown is named "Dropdown2" as validate script of first dropdown use like this:

var drop2 = this.getField("Dropdown2");
if(event.value == "IT")
drop2.setItems(["AOS/Unit Data/Position Data","Access/Security","Alert/Audit"]);
else
drop2.clearItems();

Participant
February 7, 2023

Is it possible to affect multiple drop down lists from the value selected in the first list?

List 1 - select the value that affects the other lists

List 2 - correctly affected

List 3 - nothing happens with the code below

 

if(event.value == "Training")
this.getField("Earning1.0.0","Earning1.0.1").setItems(["Training-OTJ","Training-Platform"]);
else if(event.value == "Mortgage")
this.getField("Earning1.0.0","Earning1.0.1").setItems(["Commissions","Referral Fees-Mortgage"]);
else this.getField("Earning1.0.0","Earning1.0.1").clearItems();

Nesa Nurani
Community Expert
Community Expert
February 7, 2023

Use this:

if(event.value == "Training"){
this.getField("Earning1.0.0").setItems(["Training-OTJ","Training-Platform"]);
this.getField("Earning1.0.1").setItems(["Training-OTJ","Training-Platform"]);}
else if(event.value == "Mortgage"){
this.getField("Earning1.0.0").setItems(["Commissions","Referral Fees-Mortgage"]);
this.getField("Earning1.0.1").setItems(["Commissions","Referral Fees-Mortgage"]);}
else{
this.getField("Earning1.0.0").clearItems();
this.getField("Earning1.0.1").clearItems();}
Participant
February 8, 2023

You are a genius! That was my first time posting on this forum for help and I did not expect an answer so quickly. I can't thank you enough. This was my first time using JavaScript.

Participant
December 6, 2022

Hi,

Could someone please check the following code, I get error message. Thank you!

 

 

if(event.value == "Byggnad inomhus")
this.getField("Välj typ").setItems(["Avlopp / Vask","Belysning","Brödhylla","Entrematta",Fönster/Skyltfönster","Hyllor butik",Höglager","Kakelvägg","Kassaskåp","Klinkergolv",Köksinredning/Vitvaror","Ljuslådor för AHT frys/kylboxar","Möbler/Stolar","Packbänk","Plastridå","Plexiglaspartier","Påkörningsskyd","Reklam och foliering","Skadedjursbekämpning","Solskyddsgardin","Toaletter","Trappor/Stegar inomhus","Undertaksplattor/Bärverk","Varmvattenberedare","Väggar"]);
this.getField("Välj typ").setItems(["Daggvattenbrunnar","Entregolv","Fasader","Gavelskyltar / Fasadskyltar","Kundvagnar/Kundvagnskorgar","Kundvangsfållar/boxar","Lastbrygga","Lastramp","Non Food skåp","Påkörningsskydd/Pollare","Reklamskyltar på fasaden","Skrapgaller","Solskyddstak/Jalusier utomhus","Trappor/Stegar utomhus","Utomhusbelysning byggnad","Väderskydd lastkaj"]);
else if(event.value == "Dörrar")
this.getField("Välj typ").setItems([" Branddörr","Dörrar","Frysrumsdörr","Ingångsdörrar automatik","Lås/Nycklar","Nattleveranszon avgränsning","Skjutgrind (elektrisk)","Snabbrullport","Taksjutportar"]);
else if(event.value == "IT")
this.getField("Välj typ").setItems(["Hårdvara","Överordnat styrsystem"]);
else if(event.value == "Kylteknik")
this.getField("Välj typ").setItems(["Frys och köttboxar","Frysrum","Frysrumsdörr","Glasdörr","Kylcell Aggregat","Kylcell Takskjutport","Kyldiskar/Mopro"]);else if(event.value == "Säkerhet")
this.getField("Välj typ").setItems(["Brandlarm / Utrymninglarm","Brandpost (inomhus)","Brandpost (utomhus)","Brandsläckare","Larmanläggning","Nödutgångsbelysning","Rökluckor","Varularm","Videoövervakning"]);
else if(event.value == "Säkerhetskontroll")
this.getField("Välj typ").setItems(["Säkerhetskontroll Brandskydd","Säkerhetskontroll Elinstallation","Säkerhetskontroll Statik"]);
else if(event.value == "Tak")
this.getField("Välj typ").setItems(["Hängrännor / Stuprör","Skärmtak","Tak","Takkonstruktion"]);
else if(event.value == "Teknisk anläggning")
this.getField("Välj typ").setItems(["Alldammsugare","Bake off ugn","Balpress";"Balpress","Batteriladdare","Brödpåfyllningsvagn","Brödskärningsmaskin","Diskbänk bröd beredning","Dräneringspump","Elskåp/Säkringar","Eltankställe","Eltruck","F&G och avskrivningsvåg","Frukt & Grönt automat","Handtruck","Inventeringsvåg","Kaffemaskin butik","Kassaspärr","Kassor","Klimatanläggning","Komprimator skruv","Kylaggregat","Kylmedelskylare","Lastbrygga","Luft-värmepump","Pantautomat","Pengavåg","Personhiss","Hiss","Pumpar","Ridåvärmare (Dörrar butiker)","Rulltappa-band","Solcellssystem","Städmaskin/Butiker","Technoport/Entregrind","Tobaksförvaring","UPS/Nödströmsaggregat","Uppvärmning","Varuhiss","Ventilation","Värmeåtervinning"]);
else if(event.value == "Utomhusanläggning")
this.getField("Välj typ").setItems(["Carport","Cykelställ","Flaggor / Flaggstänger","Oljeavskiljare p-yta","Parkering/Körfält/Asfalt","Parkering/Körfält/Marksten","Parkeringsbommar","Parkeringsmarkeringar","Parkeringsyta","Planteringsytor/Gräsmattor","Reklamskyltar fristående","Sophantering","Staket/Stängsel","Stolpbelysning","Stolpskylt","Trafikskyltar parkering"]);
else this.getField("Välj typ").clearItems();

Nesa Nurani
Community Expert
Community Expert
December 6, 2022

You are missing 'else if'condition after first 'if'.
Missing 3 qoutes in first condition.

You have error here(check red text):
else if(event.value == "Teknisk anläggning")
this.getField("Välj typ").setItems(["Alldammsugare","Bake off ugn","Balpress";"Balpress",

 

Participant
December 8, 2022

Thank you, it still does not work. Will you look at it again? I am forever grateful!

 

if(event.value == "Byggnad inomhus")
this.getField("Välj typ").setItems(["Avlopp / Vask","Belysning","Brödhylla","Entrematta",Fönster/Skyltfönster","Hyllor butik",Höglager","Kakelvägg","Kassaskåp","Klinkergolv",Köksinredning/Vitvaror","Ljuslådor för AHT frys/kylboxar","Möbler/Stolar","Packbänk","Plastridå","Plexiglaspartier","Påkörningsskyd","Reklam och foliering","Skadedjursbekämpning","Solskyddsgardin","Toaletter","Trappor/Stegar inomhus","Undertaksplattor/Bärverk","Varmvattenberedare","Väggar"]);
else if(event.value == "Byggnad utomhus")
this.getField("Välj typ").setItems(["Daggvattenbrunnar","Entregolv","Fasader","Gavelskyltar / Fasadskyltar","Kundvagnar/Kundvagnskorgar","Kundvangsfållar/boxar","Lastbrygga","Lastramp","Non Food skåp","Påkörningsskydd/Pollare","Reklamskyltar på fasaden","Skrapgaller","Solskyddstak/Jalusier utomhus","Trappor/Stegar utomhus","Utomhusbelysning byggnad","Väderskydd lastkaj"]);
else if(event.value == "Dörrar")
this.getField("Välj typ").setItems([" Branddörr","Dörrar","Frysrumsdörr","Ingångsdörrar automatik","Lås/Nycklar","Nattleveranszon avgränsning","Skjutgrind (elektrisk)","Snabbrullport","Taksjutportar"]);
else if(event.value == "IT")
this.getField("Välj typ").setItems(["Hårdvara","Överordnat styrsystem"]);
else if(event.value == "Kylteknik")
this.getField("Välj typ").setItems(["Frys och köttboxar","Frysrum","Frysrumsdörr","Glasdörr","Kylcell Aggregat","Kylcell Takskjutport","Kyldiskar/Mopro"]);else if(event.value == "Säkerhet")
this.getField("Välj typ").setItems(["Brandlarm / Utrymninglarm","Brandpost (inomhus)","Brandpost (utomhus)","Brandsläckare","Larmanläggning","Nödutgångsbelysning","Rökluckor","Varularm","Videoövervakning"]);
else if(event.value == "Säkerhetskontroll")
this.getField("Välj typ").setItems(["Säkerhetskontroll Brandskydd","Säkerhetskontroll Elinstallation","Säkerhetskontroll Statik"]);
else if(event.value == "Tak")
this.getField("Välj typ").setItems(["Hängrännor / Stuprör","Skärmtak","Tak","Takkonstruktion"]);
else if(event.value == "Teknisk anläggning")
this.getField("Välj typ").setItems(["Alldammsugare","Bake off ugn","Balpress","Batteriladdare","Brödpåfyllningsvagn","Brödskärningsmaskin","Diskbänk bröd beredning","Dräneringspump","Elskåp/Säkringar","Eltankställe","Eltruck","F&G och avskrivningsvåg","Frukt & Grönt automat","Handtruck","Inventeringsvåg","Kaffemaskin butik","Kassaspärr","Kassor","Klimatanläggning","Komprimator skruv","Kylaggregat","Kylmedelskylare","Lastbrygga","Luft-värmepump","Pantautomat","Pengavåg","Personhiss","Hiss","Pumpar","Ridåvärmare (Dörrar butiker)","Rulltappa-band","Solcellssystem","Städmaskin/Butiker","Technoport/Entregrind","Tobaksförvaring","UPS/Nödströmsaggregat","Uppvärmning","Varuhiss","Ventilation","Värmeåtervinning"]);
else if(event.value == "Utomhusanläggning")
this.getField("Välj typ").setItems(["Carport","Cykelställ","Flaggor / Flaggstänger","Oljeavskiljare p-yta","Parkering/Körfält/Asfalt","Parkering/Körfält/Marksten","Parkeringsbommar","Parkeringsmarkeringar","Parkeringsyta","Planteringsytor/Gräsmattor","Reklamskyltar fristående","Sophantering","Staket/Stängsel","Stolpbelysning","Stolpskylt","Trafikskyltar parkering"]);
else this.getField("Välj typ").clearItems();

Participant
April 12, 2022

This is fantastic -- worked like a charm! only issue I am having is that once the second dropdown is populated and a selection is made, when the form is submitted it does not get sent to the recieving folder... leaves that section blank. Any idea how this can be fixed? 

Nesa Nurani
Community Expert
Nesa NuraniCommunity ExpertCorrect answer
Community Expert
March 18, 2021

Use setItems() to populate dropdown field, here is an example code:

if(event.value == "Item1")
this.getField("Dropdown2").setItems(["Item 1","Item 2","Item 3"]);
else if(event.value == "Item2")
this.getField("Dropdown2").setItems(["Item 4","Item 5","Item 6"]);
else this.getField("Dropdown2").clearItems();

You can also give items an export value like this:

setItems([["Item 1", "1"], ["Item 2", "2"], ["Item 3", "3"]]);
Participating Frequently
February 10, 2022

Where should this code be placed? I would assume in the properties of the first dropdown somewhere? Thanks!

Nesa Nurani
Community Expert
Community Expert
February 10, 2022

Yes, in first dropdown field properties -> Validation -> Run custom validation script.