How to hide html elements with a radio button

This is a html / css / javascript beginner question. I banged my head against the wall, but I still can't figure it out. I have a simple web form that users fill out (name, email, etc.) and the way it should work is that when the user clicks on a radio button that says Yes, they see a dropdown menu with a given number of items and when they click "No" they see a text box. I've got this part working correctly, but I want the dropdown menu and textbox to start hiding and then reappear when the Yes or No button is clicked. I tried style = display:hidden;

, but when I used this, the text and the dropdown menu didn't appear anymore.

Thanks a lot for any answers!

This is the code I am using:

<tr align="left" valign="middle">
  <td colspan="1" rowspan="1">
    <p>&nbsp;</p>
  </td>
  <td colspan="1" rowspan="1">
    <p><b><font color="#cc0000" face="Georgia, Times New Roman, Times, serif" size="+2">*</font></b></p>
  </td>
  <td colspan="1" rowspan="1">
    <p>Do you own a Zaxwerks product?</p>
  </td>
  <td colspan="1" rowspan="1">
    <p><input id="customer" name="STATUS" onclick="javascript: test();" type="radio" value="Existing Customer" /> Yes<br />
    <input id="demo" name="STATUS" onclick="javascript: test();" type="radio" value="Downloaded Demo" /> No</p>
  </td>
  <script type="text/javascript"> 
    function test() {
      if (document.getElementById('customer').checked) {
        //Show
        document.getElementById('show_customer').style.display = 'block';
        document.getElementById('show_customer2').style.display = 'block';
        document.getElementById('show_customer3').style.display = 'block';
        document.getElementById('show_customer4').style.display = 'block';

        //Hide
        document.getElementById('show_demo').style.display = 'none';
        document.getElementById('show_demo2').style.display = 'none';
        document.getElementById('show_demo3').style.display = 'none';
      } else {
        //Show
        document.getElementById('show_demo').style.display = 'block';
        document.getElementById('show_demo2').style.display = 'block';
        document.getElementById('show_demo3').style.display = 'block';

        //Hide
        document.getElementById('show_customer').style.display = 'none';
        document.getElementById('show_customer2').style.display = 'none';
        document.getElementById('show_customer3').style.display = 'none';
        document.getElementById('show_customer4').style.display = 'none';
      }
    }
  </script>
  <td>&nbsp;</td>
</tr>
<tr>
  <td colspan="1" rowspan="1" style="display: none;">
    <p>&nbsp;</p>
  </td>
  <td colspan="1" rowspan="1" style="display: none;">
    <div id="show_customer">
      <p><b><font color="#cc0000" face="Georgia, Times New Roman, Times, serif" size="+2">*</font></b></p>
    </div>

    <div id="show_demo" style="display: none;">
      <p><b><font color="#cc0000" face="Georgia, Times New Roman, Times, serif" size="+2">*</font></b></p>
    </div>
  </td>
  <td colspan="1" rowspan="1" style="display: none;">
    <div id="show_customer2">
      <p>Product Owned:</p>
    </div>

    <div id="show_demo2" >
      <p>Where did you hear about us?:</p>
    </div>
  </td>
<!--This is where the user selects which product they own. (In the following code: value equals "what appears in the log file" what appears in the site menu)-->
  <td colspan="1" rowspan="1">
    <div id="show_customer3" style="display: none;">
      <p><select id="WHAT" name="WHAT" size="1">
        <option selected="selected" value="">Select One</option>
        <option value="Item 1">Item 1</option>
        <option value="Item 2">Item 2</option>
        <option value="Item 3">Item 3</option>
        <option value="Item 4">Item 4</option>
        <option value="Item 5">Item 5</option>
        <option value="Item 6">Item 6</option>
        <option value="Item 7">Item 8</option>
        <option value="Item 9">Item 9</option>
        <option value="Item 10">Item 10</option>
        <option value="Item 11">Item 11</option>
        <option value="Item 12">Item 12</option>
      </select></p>
    </div>

    <div id="show_demo3" style="display: none;">
      <p>
        <input maxlength="64" name="WHERE" size="30" type="text" value="" />
      </p>
    </div>
  </td>
  <td>&nbsp;</td>
</tr>

      

+3


source to share


2 answers


Use the same display:none

one you use elsewhere in your code. In particular, these lines

<div id="show_customer2" style="display: none;">
  <p>Product Owned:</p>
</div>

<div id="show_demo2" style="display: none;">
  <p>Where did you hear about us?:</p>
</div>

      

Here's a working example:



<tr align="left" valign="middle">
  <td colspan="1" rowspan="1">
    <p>&nbsp;</p>
  </td>
  <td colspan="1" rowspan="1">
    <p><b><font color="#cc0000" face="Georgia, Times New Roman, Times, serif" size="+2">*</font></b></p>
  </td>
  <td colspan="1" rowspan="1">
    <p>Do you own a Zaxwerks product?</p>
  </td>
  <td colspan="1" rowspan="1">
    <p><input id="customer" name="STATUS" onclick="javascript: test();" type="radio" value="Existing Customer" /> Yes<br />
    <input id="demo" name="STATUS" onclick="javascript: test();" type="radio" value="Downloaded Demo" /> No</p>
  </td>
  <script type="text/javascript"> 
    function test() {
      if (document.getElementById('customer').checked) {
        //Show
        document.getElementById('show_customer').style.display = 'block';
        document.getElementById('show_customer2').style.display = 'block';
        document.getElementById('show_customer3').style.display = 'block';
        document.getElementById('show_customer4').style.display = 'block';

        //Hide
        document.getElementById('show_demo').style.display = 'none';
        document.getElementById('show_demo2').style.display = 'none';
        document.getElementById('show_demo3').style.display = 'none';
      } else {
        //Show
        document.getElementById('show_demo').style.display = 'block';
        document.getElementById('show_demo2').style.display = 'block';
        document.getElementById('show_demo3').style.display = 'block';

        //Hide
        document.getElementById('show_customer').style.display = 'none';
        document.getElementById('show_customer2').style.display = 'none';
        document.getElementById('show_customer3').style.display = 'none';
        document.getElementById('show_customer4').style.display = 'none';
      }
    }
  </script>
  <td>&nbsp;</td>
</tr>
<tr>
  <td colspan="1" rowspan="1" style="display: none;">
    <p>&nbsp;</p>
  </td>
  <td colspan="1" rowspan="1" style="display: none;">
    <div id="show_customer">
      <p><b><font color="#cc0000" face="Georgia, Times New Roman, Times, serif" size="+2">*</font></b></p>
    </div>

    <div id="show_demo" style="display: none;">
      <p><b><font color="#cc0000" face="Georgia, Times New Roman, Times, serif" size="+2">*</font></b></p>
    </div>
  </td>
  <td colspan="1" rowspan="1" style="display: none;">
    <div id="show_customer2" style="display: none;">
      <p>Product Owned:</p>
    </div>

    <div id="show_demo2" style="display: none;">
      <p>Where did you hear about us?:</p>
    </div>
  </td>
<!--This is where the user selects which product they own. (In the following code: value equals "what appears in the log file" what appears in the site menu)-->
  <td colspan="1" rowspan="1">
    <div id="show_customer3" style="display: none;">
      <p><select id="WHAT" name="WHAT" size="1">
        <option selected="selected" value="">Select One</option>
        <option value="Item 1">Item 1</option>
        <option value="Item 2">Item 2</option>
        <option value="Item 3">Item 3</option>
        <option value="Item 4">Item 4</option>
        <option value="Item 5">Item 5</option>
        <option value="Item 6">Item 6</option>
      </select></p>
    </div>

    <div id="show_demo3" style="display: none;">
      <p>
        <input maxlength="64" name="WHERE" size="30" type="text" value="" />
      </p>
    </div>
  </td>
  <td>&nbsp;</td>
</tr>
      

Run codeHide result


0


source


If you want to restructure some of your information, it's easy to do with CSS:



<style type="text/css">

.customers , .demo{
    display:none;
}
#customer[type="radio"]:checked ~ .customers{
   display:block;
}
#demo[type="radio"]:checked ~ .demo{
   display:block;
}


</style>


<table>
<tr>
<td>
    <input id="customer" name="STATUS" type="radio" value="Existing Customer" /> Yes
    <input id="demo" name="STATUS" type="radio" value="Downloaded Demo" /> No
   <div class="customers">
      <p>Product Owned:</p>
    </div>

    <div class="demo">
      <p>Where did you hear about us?:</p>
    </div>      



</td>
</tr>
</table>

      

0


source







All Articles