UPDATE: Code has been updated per Dan's comments.
I have a problem with a project I'm working on. I need to create a list of checkboxes depending on what is selected in a select dropdown above. I would like to use javascript for this. I was able to create a select dropdown dependent on the select above but the client wants checkboxes instead. I figured it would be essentially done the same way, except making checkboxes this time, but I can't get it to work. I usually use php for my programing and therefore don't know javascript too well. Here is the code I have to make the select dropdown.... what would be the best way to make it a list of checkboxes instead? Please note that this code has been greatly reduced to keep it easy to read (only the parts that matter are here).
Code:
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
function populate(slct1,slct2){
var s1 = document.getElementById(slct1);
var s2 = document.getElementById(slct2);
s2.innerHTML = "";
if(s1.value == "Cat1"){
var optionArray = ["Subcat1","Subcat1.1","Subcat1.2"];
} else if(s1.value == "Cat2"){
var optionArray = ["Subcat2","Subcat2.1","Subcat2.2"];
} else if(s1.value == "Cat3"){
var optionArray = ["Subcat3","Subcat3.1","Subcat3.3"];
}
for(var option in optionArray){
if (optionArray.hasOwnProperty(option)) {
var pair = optionArray[option];
var newOption = document.createElement("option");
newOption.value = pair;
newOption.innerHTML = pair;
s2.options.add(newOption);
}
}
}
</script>
</head>
<body>
<h2>Dynamic Select Dropdown</h2>
<hr />
Choose a Category:
<select id="slct1" name="slct1" onchange="populate(this.id,'slct2')">
<option value=""></option>
<option value="Cat1">Cat1</option>
<option value="Cat2">Cat2</option>
<option value="Cat3">Cat3</option>
</select>
<hr />
Choose Subcategory:
<select id="slct2" name="slct2"></select>
<hr />
</body>
</html>
Any help would be greatly appreciated and I would try my best to repay the favor if you ever needed help with any development.
The process of creating a checkbox dynamically is indeed a little more involved than creating a select option. You need to create:
<br>
for stylingHere's the gist of the code, with the full fiddle at http://jsfiddle.net/dandv/9aZQF/2/:
A checkbox is a simple input element with
type='checkbox'
. So you have to prepare at least two things: a text node for the description of the box and the box itself. In this case it's also good to use a<label>
element to include both things mention before:You have to do the steps above for every pair. Note that you have to clear the given
<div id="some_div"></div>
before you populate it: