sucede que cuando usas una referencia como
document.nombre_form.nombre_radio, en esta forma devuelve un solo elemento si existe
solo un elemento con dicho nombre. sin embargo, si varios elementos tienen el mismo nombre, entonces la linea de codigo anterior devuelve una coleccion de elementos, algo parecido a un array. por tanto, en tu caso sucede que si
radio es el
unico elemento, entonces
radio.length es
undefined porque no existe esa propiedad para dicho elemento. por ello te dice que no has seleccionado una opcion. puedes usar varias formas para comprobar cuando se trata de un solo elemento o de una coleccion. en el siguiente arreglo utilizo
isNaN para determinar si existe la propiedad
length.
Código:
function getSelectedRadioButton(radio){
var r, flagSelec = false;
if(isNaN(radio.length) && radio.checked){
alert("El elemento seleccionado es: 0");
return 0;
}
r=radio.length;
for (i=0; i<r; i++){
if (radio[i].checked) {
seleccionado=i;
flagSelec=true;
}
}
if(flagSelec==true){
alert("El elemento seleccionado es: " + seleccionado);
return seleccionado;
} else alert("Debe seleccionar algun hotel!!!");
}
la otra alternativa sin tener que hacer un arreglo a la funcion, es pasar una coleccion de elementos como argumento a la funcion. para ello, tienes que usar la funcion
document.getElementsByName el cual crea una coleccion independientemente de la cantidad de elementos.
Código:
getSelectedRadioButton(document.getElementsByName("nombre_radio"));