RE:Validar matriz de radio button
<!-- Matriz (l**2) de Radio Buttons por fila y columna (l selecs.) -->
<!-- by Jesus Maria Calleja Pereda ···==< X >==··· JMC-EHS (c) 2007 -->
<html><title>Matriz radio buttons</title>
<body onload="creaMatRadio(5);">
<font color=green><h2>Matriz radio buttons</h2></font>
</body>
<script>
function ndxRadio(nameradio){
var r = document.all(nameradio);
for (var i=0;i<r.length;++i)
if (r[i].checked) return i;
//
return -1;
}
function xcheck(o, ant){
if (ant <0 ) { alert("Error de código!!!!"); return; } // no ha de ocurrir
var tbody = o.parentElement?o.parentElement.parentElement.parentElement:o.parentNode.parentNode.parentNode;
var nf = tbody.rows.length;
for (var i=0;i<nf;++i){
var of = document.all["rd_"+i];
if (o.name=="rd_"+i) continue; // no hace falta mirar
var ndx = o.parentElement?o.parentElement.cellIndex:o.parentNode.cellIndex;
if (of[ndx].checked) of[ant].click();
}
}
function clic(ev){
miEv = window.event? window.event:ev;
var el = window.event?miEv.srcElement:miEv.target;
if (el.checked) return; // ya 'ta
xcheck(el,ndxRadio(el.name));
if (window.event) miEv.returnValue=true;
else miEv.preventDefault();
return true;
}
// global
var nav = document.body.parentElement?"IE":"";
// Mozilla - FireFox
function creaMatRadio(q){
if (nav=="IE") {creaMatRadioIE(q); return; }
var tabla = document.createElement('table');
tabla.setAttribute('id','idT');
var tbody = document.createElement('tbody');
for (var i=0;i<q;++i){
tr = document.createElement('tr');
for (j=0;j<q;++j){
var td = document.createElement('td');
var input = document.createElement('input');
input.setAttribute('type','radio');
input.setAttribute('name','rd_'+i);
input.setAttribute('id','idRd_'+i+""+j);
input.setAttribute('value',i*q+j);
input.setAttribute('onmousedown','clic(event)');
if(j==i) input.setAttribute('checked',true);
td.appendChild(input);
tr.appendChild(td);
}
tbody.appendChild(tr);
}
tabla.appendChild(tbody);
document.body.appendChild(tabla);
}
// IE
function creaMatRadioIE(q){
var tabla = document.createElement('table');
document.body.appendChild(tabla);
var row = null, cell = null;
var input;
for (var i=0;i<q;++i){
row = tabla.insertRow();
for (j=0;j<q;++j){
cell = row.insertCell();
input = "<input type=radio onmousedown='return clic();' name='rd_"+i+"' id='idRd_"+i+""+j+"' value="+i*q+j;
input += (i==j)?" checked>":">";
cell.insertAdjacentHTML("AfterBegin", input);
}
}
}
</script>
</html>