Skip to main content
Participating Frequently
Jan 16, 2025 3:20 PM UTC
Answered

Only Showing Text Fields when requested and script optimization.

When my dropdown menu selects a rank, specific text field become visible. The issue is, when a rank that has more visible text fields is selected before one with less, you can still see the text fields.

 

if (event.value == "Rank | 1") {
    this.getField("pilot_info_rank_dc").value = "0";
    this.getField("SMT_trait_name1.0").display = display.visible;

}else if (event.value == "Rank | 2") {
    this.getField("pilot_info_rank_dc").value = "20";
    this.getField("SMT_trait_name1.0").display = display.visible;
    this.getField("SMT_mod_name1.0").display = display.visible;

}else if (event.value == "Rank | 3") {
    this.getField("pilot_info_rank_dc").value = "60";
    this.getField("SMT_trait_name1.0").display = display.visible;
    this.getField("SMT_mod_name1.0").display = display.visible;
    this.getField("SMT_mod_name1.1").display = display.visible;

}else if (event.value == "Rank | 4") {
    this.getField("pilot_info_rank_dc").value = "120";
    this.getField("SMT_trait_name1.0").display = display.visible;
    this.getField("SMT_mod_name1.0").display = display.visible;
    this.getField("SMT_mod_name1.1").display = display.visible;
    this.getField("SMT_mod_name1.2").display = display.visible;

}else if (event.value == "Rank | 5") {
    this.getField("pilot_info_rank_dc").value = "200";
    this.getField("SMT_trait_name1.0").display = display.visible;
    this.getField("SMT_trait_name1.1").display = display.visible;
    this.getField("SMT_mod_name1.0").display = display.visible;
    this.getField("SMT_mod_name1.1").display = display.visible;
    this.getField("SMT_mod_name1.2").display = display.visible;

}else if (event.value == "AI | Simple") {
    this.getField("pilot_info_rank_dc").value = "0";

}else if (event.value == "AI | Intermediate") {
    this.getField("pilot_info_rank_dc").value = "25";
    this.getField("SMT_mod_name1.0").display = display.visible;

}else if (event.value == "AI | Advanced") {
    this.getField("pilot_info_rank_dc").value = "50";
    this.getField("SMT_mod_name1.0").display = display.visible;
    this.getField("SMT_mod_name1.1").display = display.visible;

}

Im not sure if adding a simple ".display-display.hidden" to the beginning would work.

 

Also, this is spaghetti code to the extreme. Could someone help me optimize this?

PDF Automation Station
Community Expert
Jan 16, 2025 4:17 PM UTC

Hide all the fields at the beginning of the script.  You only need to use the root of the field names:

this.getField("SMT_trait_name1").display = display.hidden;
this.getField("SMT_mod_name1").display = display.hidden;

1 reply

PDF Automation Station
Community Expert
Community Expert
Jan 16, 2025 4:17 PM UTC

Hide all the fields at the beginning of the script.  You only need to use the root of the field names:

this.getField("SMT_trait_name1").display = display.hidden;
this.getField("SMT_mod_name1").display = display.hidden;

Translate