This seems to be a simple problem, but I dont use alot of javascript.
I have a div, with a checkbox in it, and would like the whole div to toggle the checkbox. This is what I have so far:
<div style="padding: 2em; border: 1px solid"
onClick="if (document.getElementById('cb').checked) document.getElementById('cb').checked=false; else document.getElementById('cb').checked=true;">
<input name="cb" id="cb" type="checkbox">
</div>
Only problem is when you click the actual checkbox, it get toggled twice, and therefore doesn't change.
Any ideas?
To set an onClick listener on a div element in React:Set the onClick prop on the div. The function you pass to the prop will get called every time the div is clicked. You can access the div as event. currentTarget .
The CheckBox has been assigned a JavaScript OnClick event handler. When the CheckBox is clicked, the ShowHideDiv JavaScript function is executed. Inside this function, based on whether CheckBox is checked (selected) or unchecked (unselected), the HTML DIV with TextBox is shown or hidden.
It's possible you could implement this in a more robust and accessible way by using the label element to wrap the area you want to click.
For example:
<label for="cb">
<div style="padding: 2em; border: 1px solid">
<input name="cb" id="cb" type="checkbox">
</div>
</label>
I haven't tested the above code, but I believe all browsers support clicking of labels to check an input box.
onclick="if (event.target.tagName != 'INPUT') document.getElementById('cb').checked = !document.getElementById('cb').checked"
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With