Linking Drop Downs

CK CK 3788 
Created at  
579 0 0
Linking drop downs is a frequent question. Here is a javascript based example

<html>
<head>
<script language='javascript'>
/*
  This assumes that you can work out how to fill the first box with php.

  Then you create a series of js arrays,one index for each value of the parent box filled with
  all the possible values for the child box. The below example assumes that the option value and
  text are the same. You can use additional separators to split those elements if the value and text
  are different (1,Here;2,There;3,Somewhere Else)


*/

var box2 = new Array();
box2['x'] = ",1,2,3";
box2['y'] = ",4,5,6";
box2['z'] = ",7,8,9";

var box3 = new Array();
box3['1'] = ",q,r,s";
box3['2'] = ",t,u,v";


function loadOptions(sParentBox,sChildBox)
{
  //get the value of the selected option
  var sParentValue = document.getElementById(sParentBox).value;
alert(sParentValue);
  //load the appropriate event list to the option box
  var theSel  = document.getElementById(sChildBox);

  //clear previous options
  theSel.options.length = null;

  //handle if there is no value
  if (sParentValue == ''){alert("exiting"); return;}

  if (sParentBox == "box1") {
    oTargetArray = box2;
  }else if(sParentBox == "box2"){
    oTargetArray = box3;
  }

  //split the array values by the separator
  var arrList     = oTargetArray[sParentValue].split(",");

  //loop thru the array of options to add them to the dropdown
  for (x=0; x < arrList.length; x  )
  {
    var newOpt     = new Option(arrList[x],arrList[x]);//(theText,theValue);
    var selLength  = theSel.length;
    theSel.options[selLength] = newOpt;
  }//next
}//end func

</script>
</head>
<body>
<form>
<table>
  <tr>
    <td>Box 1</td>
    <td>
      <select name="box1" id="box1" onchange="loadOptions(this.name,'box2');">
          <option value=''></option>
          <option value='x'>x</option>
          <option value='y'>y</option>
          <option value='z'>z</option>
      </select>
    </td>
  </tr>
  <tr>
    <td>Box 2</td>
    <td>
      <select name="box2" id="box2" onchange="loadOptions(this.name,'box3');">
      </select>
    </td>
  </tr>
  <tr>
    <td>Box 1</td>
    <td>
      <select name="box3" id="box3">
      </select>
    </td>
  </tr>

</form>
</body>
</html>

Tags Drop down Dropdown HTML Javascript Linking Drop down getElementById Facebook X
Comments 0
Similar posts
  1. Roman Numerals From Integers
    518
  2. Get A Print Dialog Box By Clicking A Button
    822
  3. Example Of Creating Objects
    404
  4. Keyboard event detection (Key Tracker)
    1,093
  5. Printing A Page
    383
  6. IsIn For Arrays
    572
  7. Cross Browser Event Management Functions Using JavaScript
    611
  8. Javascript & Cookie based Visitor Application
    439
  9. How to record visitor's name by Cookie
    414
  10. Save And Restore Form Cookies in Javascript
    339
  11. Let popup once for event dialog or something like that in Javascript
    428
  12. New content notifier in Javascript
    606
  13. Cookie Redirect
    505
  14. Cookie enabled browser checking in Javascript
    344
  15. Access Granted
    593
  16. Greeting For The Time Of Day
    395
  17. Displays the number of pages that the users browser has displayed in its session
    670
  18. Address Book
    580
  19. Basic Date Display
    518
  20. Javascript implemented Calendar
    425
  21. Javascript based Alarm Clock
    679
  22. How to get date time in Javascript ?
    502
  23. Hiding HTML on the browser
    468
  24. Getting WebSearchers On Your Site
    378
  25. Javascript Mouse Event Handler Example
    404
  26. Select And Deselect All Checkboxes By Javascript
    634
  27. Confirm The Link Clicked
    632
  28. Enlarge Image
    517
  29. Dual Scroller
    335
  30. Cursor Changer
    387
  1. Icon Coupled Url
    429
  2. Button That Will Close The Browser Window
    353
  3. Button That Will Show The Page's Source
    390
  4. Add A Scrolling Status Bar Text To Your Site
    411
  5. Add This Page To Favorites
    406
  6. Code To Clear Browser History
    378
  7. Remove the spaces before begin and after end of text
    342
  8. How To Close A Pop-up Window ?
    449
  9. Pop Up Window On Top
    523
  10. How to display message on browser status bar ?
    481
  11. New Window
    613
  12. Firefox Web Tweaking
    381
  13. Color Table
    370
  14. Send An Email Using A Bean
    1,020
  15. jQuery and Function Chaining
    540
Recently updated
  1. Google OAuth Token Expiration: Causes and Solutions
    29
  2. Why 100% SEO Guarantees Better User Engagement and How to Achieve It in Your Service
    55
  3. Why SPF and DKIM Are Essential for Linux Email Servers?
    49
  4. How do I create animated background for Google Meet?
    22,854
  5. MaxMind GeoLite2 vs. DB-IP Lite vs. ip-api.com: Choosing the Right Free IP Geolocation Solution
    271
  6. Meet Valkey: Why Redis Changed Its License, Why Valkey is Better, and How to Use It as a Drop-in Replacement
    103
  7. How Rogue Web Scrapers Are Stealing My Content and Destroying My Server
    168
  8. Array of arguments passed to script in PHP
    97
  9. Invalid Auction Storms in Ad Tech
    106
  10. Building MRC-Compliant Instrumentation in Ad Tech: Implementation Steps and Key Challenges
    207
  11. The Two Clocks of Ad Server Architecture
    77
  12. Frequency Cap Architecture Overview
    526
  13. Collecting Proof-of-Play from 100,000 Screens
    152
  14. Vector Search in Relational Databases (RDBs): Trends & Usage Environments
    302
  15. What is RedisVL?
    114
  16. Designing a Skill Registry Architecture: Minimize Token Usage and Maximize AI Performance
    246
  17. TPU & GPU Cluster Management Tools
    257
  18. The Concept of Scaffolding in AI Agents
    244
  19. Beyond Static Pipelines: Architecting LLM Multi-Agent Systems for Autonomous Workflow Orchestration
    596
  20. AI-DLC vs. AI-SDLC: Model-Centric vs. System-Centric AI Development
    267
  21. Fine-Tuning Open-Weight LLMs: Training, Licensing, and Deploying Custom Models with Ollama
    353
  22. Inside the Next-Generation Streaming Architecture: Ultra-Low Latency, SGAI, and AI Codecs
    206
  23. Machine Learning: Training vs. Ranking
    229
  24. The Continuous Learning Machine: Designing a Loop That Actually Turns
    228
  25. The Next-Gen Low-Latency Standards: LL-HLS & MoQ
    202
  26. Designing a Data Curation System Around a Vector Database
    230
  27. Extracting Context from Live Video: The Architecture Got Simpler When We Stopped Building Features
    263
  28. The New Ad Stack Behind Live Sports Streaming: Inside SGAI, EABN, and the Standards Race to Fix Live Monetization
    671
  29. Designing MLOps Architectures to Handle Seasonal Data Drift in EV Fleet Models
    200
  30. From 15 to 40+ FPS: Accelerating PyTorch Object Detection on Automotive ECUs
    232