Issue
I'm trying to set up something in JQuery but at the moment I'm not really sure I'm doing it right.
To keep it simple, I would like to display 4 checkboxes. These checkboxes serve as filters. For the example, let's say the first checkbox is spring, the second is summer, the third is autumn and the fourth is winter.
When I check the "summer" box I would like some text to be displayed. If I tick the autumn one, another text is displayed. Basically, I would like to display different texts depending on what is ticked.
<script type="text/javascript">
function ShowHideDiv(winter) {
var winter_list = document.getElementById("winter_list");
winter_list.style.display = winter.checked ? "block" : "none";
}
</script>
<script type="text/javascript">
function ShowHideDiv(summer) {
var summer_list = document.getElementById("summer_list");
summer_list.style.display = summer.checked ? "block" : "none";
}
</script>
<label for="checkWinter">
<input type="checkbox" id="winter" onclick="ShowHideDiv(winter)" />
Winter
</label>
<label for="checkSummer">
<input type="checkbox" id="summer" onclick="ShowHideDiv(summer)" />
Summer
</label>
<hr />
<!-- For Winter -->
<div id="winter_list" style="display: none">
<p>Text come here</p>
</div>
<!-- For Summer -->
<div id="summer_list" style="display: none">
<p>Text come here for summer</p>
</div>
If possible: Can we make it possible to tick more than one box?
I've been following tutorials on StackOverflow but so far without much success, as I haven't found anything in the genre of my same request.
Thanks
Solution
You have a mistake in thinking of your code.
The function ShowHideDiv()does exists two times and Javascript overload it. Because your passed an undefined object, the browser choose one of them.
My Suggestion:
First step: Replace the function calls in your input fields by <input type="checkbox" id="summer" onclick="ShowHideDiv(this)" />. The parameter this passes the clicked object to target function.
Second step: Merge all of your function "ShowHideDiv" to one:
function ShowHideDiv(checkbox) {
switch (checkbox.id)
{
case "summer":
var summer_list = document.getElementById("summer_list");
summer_list.style.display = summer.checked ? "block" : "none";
break;
case "winter":
var winter_list = document.getElementById("winter_list");
winter_list.style.display = winter.checked ? "block" : "none";
break;
default:
//What ever you want do to
break;
}
}
The argument checkbox.id returns the value from attribute id of passed checkbox.
Switch and case is a smaller form of if() else if() and else().
Answered By - Reporter
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.