Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Então galera...
Fiz aqui um formulário onde tem radio button... Pra deixar o form mais bonito, usei esse plugin jquery:
http://www.maratz.com/blog/archives/2006/06/11/fancy-checkboxes-and-radio-buttons/
Está funcionando beleza...
O único problema é quando eu marco um, e depois o outro... o que tava marcado antes continua com a imagem de marcado...
Segue o JS:
<script type="text/javascript">
var d = document;
var safari = (navigator.userAgent.toLowerCase().indexOf('safari') != -1) ? true : false;
var gebtn = function(parEl,child) { return parEl.getElementsByTagName(child); };
onload = function() {
var body = gebtn(d,'body')[0];
body.className = body.className && body.className != '' ? body.className + ' has-js' : 'has-js';
if (!d.getElementById || !d.createTextNode) return;
var ls = gebtn(d,'label');
for (var i = 0; i < ls.length; i++) {
var l = ls[i];
if (l.className.indexOf('label_') == -1) continue;
var inp = gebtn(l,'input')[0];
if (l.className == 'label_check') {
l.className = (safari && inp.checked == true || inp.checked) ? 'label_check c_on' : 'label_check c_off';
l.onclick = check_it;
};
if (l.className == 'label_radio') {
l.className = (safari && inp.checked == true || inp.checked) ? 'label_radio r_on' : 'label_radio r_off';
l.onclick = turn_radio;
};
};
};
var check_it = function() {
var inp = gebtn(this,'input')[0];
if (this.className == 'label_check c_off' || (!safari && inp.checked)) {
this.className = 'label_check c_on';
if (safari) inp.click();
} else {
this.className = 'label_check c_off';
if (safari) inp.click();
};
};
var turn_radio = function() {
var inp = gebtn(this,'input')[0];
if (this.className == 'label_radio r_off' || inp.checked) {
var ls = gebtn(this.parentNode,'label');
for (var i = 0; i < ls.length; i++) {
var l = ls[i];
if (l.className.indexOf('label_radio') == -1) continue;
l.className = 'label_radio r_off';
};
this.className = 'label_radio r_on';
if (safari) inp.click();
} else {
this.className = 'label_radio r_off';
if (safari) inp.click();
};
};
</script>
CSS:
.has-js .label_check,
.has-js .label_radio { padding-left: 30px; }
.has-js .label_radio { background: url(../images/input/radio-unchecked.png) no-repeat; }
.has-js label.r_on { background: url(../images/input/radio-checked.png) no-repeat; }
.has-js .label_radio input { position: absolute; left: -9999px; }
Form:
<label class="label_radio">
<input type="radio" name="op" id="op" value="op1">
Opcao 1
</label>
<label class="label_radio">
<input type="radio" name="op" id="op" value="op2">
Opcao 2
</label>
<label class="label_radio">
<input type="radio" name="op" id="op" value="op3">
Opcao 3
</label>Carregando comentários...