One of my pet peeves is plain html radio buttons.
If I have a set of 5 radio buttons with 5 text labels of differing lengths then I want to be able to click anywhere on the shaded area and not just the text labels.
This is quite easy to achieve. Simply put each <input> into a <div>...
<div class="radio">
<input type="radio" ... value="Red"/>
<label>Red</label>
</div>
<div class="radio">
<input type="radio" ... value="Amber"/>
<label>Amber</label>
</div>
<div class="radio">
<input type="radio" ... value="Green"/>
<label>Green</label>
</div>
...and use a bit of jQuery
var $j = jQuery.noConflict();
$j(document).ready(function() {
$j('div.Radio').each(function(n,node) {
$j(node).click(function() {
$j(this).children(':first').attr('checked', true);
});
});
});
Using a <div> changes the layout - so you might want to put
each <div> into a table layout.
You can add some CSS to highlight the clickable whitespace...
.Radio { background-color: Moccasin; }
.Radio::after { content: "\00a0"; }
If you want to remove the bullet simply add the following
$j(document).ready(function() {
$j('input[type=radio]').hide();
};
If you want to see an example of this, just try
CyberDojo
What's wrong with the "for" attribute on the label-tag?
ReplyDeleteNothing - but it doesn't give you the ability to click on the whitespace after the shorter labels. Or rather - if it does I can't see how...
ReplyDelete