DropDown Select

  <font color="#FFFFFF">Test1:</font>
<select id="tm" name="tm">
<option value="a">1</option>
<option value="b">2</option>
<option value="c">3</option>
</select>
<font color="#FFFFFF">Test:</font>
<select id="ep" name="ep">
<option value="a">1</option>
<option value="b">2</option>
<option value="c">3</option>
<option value="d">4</option>
<option value="e">5</option>
</select>

When I select number 1 (drop test1) create a input and when i select number 1 (drop test) create one textarea in simultaneously…When I select number 1 (drop test1) create a input and when i select number 2 (drop test) create two textarea in simultaneously…and so on… it’s possible?

Thanks!

Hi,

I’m not 100% sure that I’ve understood your question, but let me show you how to create inputs and text areas on the fly using a <select> drop down.

So, let’s start with the mark-up. We need two <select> elements with unique ids. I have also set the value of the <option> elements to correspond to the numbers they display.

<label for="tm">Number of text fields</label>
<select id="tm" name="tm">
  <option value="">Choose a number</option>
  <option value="1">1</option>
  <option value="2">2</option>
  <option value="3">3</option>
</select>

<label for="ep">Number of text areas</label>
<select id="ep" name="ep">
  <option value="">Choose a number</option>
  <option value="1">1</option>
  <option value="2">2</option>
  <option value="3">3</option>
  <option value="4">4</option>
  <option value="5">5</option>
</select>

You then need to select these elements and attach event handlers to them, so that a function is called when the user changes their values:

var s1 = document.getElementById("tm");
var s2 = document.getElementById("ep");
s1.onchange = updateTextFields;
s2.onchange = updateTextAreas;

Within each of these functions, we can then use the value from the <option> which was selected to create the required amount of new elements (not forgetting to remove any old elements first).

function updateTextFields(){
  clearContent(textFields);
  for (i = 0; i < this.value; i++){
    input = document.createElement("input");
    input.type = "text";
    input.style.display = "block";
    textFields.appendChild(input);
  }
}

Within the for loop we can apply any attributes to our new elements that we need them to have.
Here I have added display: block;, so that they stack up under each other.

Here’s the full code. I hope it helps.
Let me know if I have misunderstood you or if you have any further questions:

<!DOCTYPE HTML>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Create text inputs and text areas dynamically</title>
    <style>
      div{margin-bottom:10px;}
      .fltLeft{float:left; margin-right:150px;}
      .clear{clear:both;}
    </style>
  </head>

  <body>
    <div>
      <label for="tm">Number of text fields</label>
      <select id="tm" name="tm">
        <option value="">Choose a number</option>
        <option value="1">1</option>
        <option value="2">2</option>
        <option value="3">3</option>
      </select>
    </div>
  
    <div>
      <label for="ep">Number of text areas</label>
      <select id="ep" name="ep">
        <option value="">Choose a number</option>
        <option value="1">1</option>
        <option value="2">2</option>
        <option value="3">3</option>
        <option value="4">4</option>
        <option value="5">5</option>
      </select>
    </div>
    
    <div>
      <p><strong>Result will appear below.</strong></p>
      <div class="fltLeft">Text fields</u><span id="textFields"></span></div>
      <div class="fltLeft">Text areas</u><span id="textAreas"></span></div>
      <br class="clear">
    </div>
    
    <script>
      function clearContent(el){
        while (el.hasChildNodes()) {
          el.removeChild(el.lastChild);
        }
      }
      
      function updateTextFields(){
        clearContent(textFields);
        for (i = 0; i < this.value; i++){
          input = document.createElement("input");
          input.type = "text";
          input.style.display = "block";
          textFields.appendChild(input);
        }
      }
      
      function updateTextAreas(){
        clearContent(textAreas);
        for (i = 0; i < this.value; i++){
          input = document.createElement("textarea");
          input.style.display = "block";
          textAreas.appendChild(input);
        }
      }
      
      var s1 = document.getElementById("tm");
      var s2 = document.getElementById("ep");
      var textFields = document.getElementById("textFields");
      var textAreas = document.getElementById("textAreas");
      
      s1.onchange = updateTextFields;
      s2.onchange = updateTextAreas;
    </script>
  </body>
</html>