Sometimes you want to show or hide certain elements of a form, depending on the selection of a radiobutton.
I am by no means any javascript ninja, but this is one simple way I came up with:
<html> <head> <script type="text/javascript"> function DisplayElement(element) { x = element.value; if (x == 1) { document.getElementById('text').style.display = ''; } else { document.getElementById('text').style.display = 'none'; } } </script> </head> <body> <form name="form"> <input name="choice" type="radio" value="1" onclick="DisplayElement(this)" checked/> <input name="choice" type="radio" value="2" onclick="DisplayElement(this)"/> <input name="text" type="text" id="text"/> </form> </body> </html>
This could apply to any element. For example, you could put a whole bunch of elements in a div and the hide/show the div. Like this:
<script type="text/javascript"> function DisplayElement(element) { x = element.value; if (x == 1) { document.getElementById('container').style.display = ''; } else { document.getElementById('container').style.display = 'none'; } } </script> <form name="form"> <input name="choice" type="radio" value="1" onclick="DisplayElement(this)" checked/> <input name="choice" type="radio" value="2" onclick="DisplayElement(this)"/> <div id="container"> <input type="checkbox"/> <input type="checkbox"/> <input type="text"/> <input type="text"/> <input type="text"/> </div> </form>
Here’s another way to do it. This example takes a number as a parameter instead of using the value of the element. A bit more compact code and it might be more flexible.
<script type="text/javascript"> function DisplayElement(x) { if (x == 1) { document.getElementById('text').style.display = ''; } else { document.getElementById('text').style.display = 'none'; } } </script> <form name="form"> <input name="choice" type="radio" onclick="DisplayElement(1)" checked/> <input name="choice" type="radio" onclick="DisplayElement(2)"/> <input name="text" type="text" id="text"/> </form>
And here’s an even more flexible version. In this example you can pass the id of the element you want to hide as a second argument to the function. This way you can use the same function to toggle the visibility of many different elements.
<script type="text/javascript"> function DisplayElement(x,target) { if (x == 1) { document.getElementById(target).style.display = ''; } else { document.getElementById(target).style.display = 'none'; } } </script> <form name="form"> <input name="choice" type="radio" onclick="DisplayElement(1,'text')" checked/> <input name="choice" type="radio" onclick="DisplayElement(2,'text')"/> <input name="text" type="text" id="text"/> </form>
Here is another post, to do the same thing with a checkbox.