Problemas con Radio buttons

139 views
Skip to first unread message

Patricio Avila

unread,
Nov 9, 2009, 10:33:41 AM11/9/09
to codeigniter-spanish
Aeñores estoy tratando de obtener el valor del radio button seleccionado de una lista de opciones y  me arroja solo erroresde javascript. la funcion es la siguiente

function radiovalue(radios) {
    for (i = 0; radio = radios[i]; i++) {
        if (radio.checked) {
            return radio.value;
        }
    }
}

Y esta es la llamada a la funcion


function valor_de_radio ()
{
  var grupo = document.getElementsByName('filtro').turno;
  alert(radiovalue(grupo));

}


Cualquier ayuda al respecto se agradece desde ya

Fásiko

unread,
Nov 9, 2009, 10:45:14 AM11/9/09
to codeignit...@googlegroups.com
Me da a mí que no tienes bien la estructura del for.
Sería más bien (no lo he probado):

function radiovalue(radios) {
    for (i = 0; i <= radios.count; i++) {
        if (radios[i].checked) {
            return radios[i].value;

Fásiko

unread,
Nov 9, 2009, 10:53:11 AM11/9/09
to codeignit...@googlegroups.com
Por cierto, en la función

function valor_de_radio ()
{
  var grupo = document.getElementsByName('filtro').turno;
  alert(radiovalue(grupo));

}

no sé que pinta el ".turno". Me da a mí que también sería var grupo = document.getElementsByName('filtro');

Patricio Avila

unread,
Nov 9, 2009, 10:57:27 AM11/9/09
to Codeigniter
Lo del for puede ser lo recusaré.

Lo del turno es el nombre de los radio y filtro es el formulario.

Saludos

Patricio Avila Figueroa
Usuario Linux #454898
Sent from my BlackBerry® wireless device
http://indenti.ca/elkan
http://palcierre.blogspot.com


From: Fásiko <fas...@gmail.com>
Date: Mon, 9 Nov 2009 16:53:11 +0100
Subject: [codeigniter-spanish] Re: Problemas con Radio buttons

Patricio Avila

unread,
Nov 9, 2009, 4:28:52 PM11/9/09
to codeignit...@googlegroups.com
Bueno amigos dejo la solucon a mi problema por si a alguien le sirve(cosa que no creo porque acá la mayoría sabe mas que yo :-()

//Rescata el valor seleccionado de un radio button
function valor_radio(radios)
{
  for(i=0; i<  document.getElementsByName(radios).length; i++)
  {
      if (document.getElementsByName(radios)[i].checked)
          break;
  }
  return document.getElementsByName(radios)[i].value
}

//llamada a la funcion
function enviarCorreos()
{
 //Le pasamos como argumento el nombre del control radio button
  alert(valor_radio('turno'))

}



saludos

Fásiko

unread,
Nov 9, 2009, 7:18:33 PM11/9/09
to codeignit...@googlegroups.com
Creo que quedaría mejor si pones el return en el lugar del break y más que nada es por varios motivos, pero uno bastante claro.
Si no se encuentra ninguno chekeado, retorna el valor del último y lógicamente eso no es correcto.
Así que desde mi punto de vista, algo más optimizado sería:
function valor_radio(radios)
{
  var total = document.getElementsByName(radios).length;
  for( i=0 ; i < total ; i++ )
  {
      if ( document.getElementsByName(radios)[i].checked )
          return document.getElementsByName(radios)[i].value;
  }
  return false;  
}

Como buenas costumbres, lo mejor es guardar el valor de un objeto en una variable si se va a utilizar en un bucle, así ahorraremos un tanto en memoria.
Si se encuentra, se retorna el valor, pero si no se encuentra, se retorna false. Así sobraría con llamar a la función dentro de un if (por ejemplo)...

if( valor = valor_radio(radios) )
{
  //lo que pasaría si se ha seleccionado
  // ya tenemos el valor del campo en la variable valor
}
else
{
  //lo que pasaría si no se ha seleccionado
}


Patricio Avila

unread,
Nov 9, 2009, 7:27:31 PM11/9/09
to Codeigniter
Como siempre haces pedazos mi solución, pero esa es la idea mejoramiento continuo ;-)

Patricio Avila Figueroa
Usuario Linux #454898
Sent from my BlackBerry® wireless device
http://indenti.ca/elkan
http://palcierre.blogspot.com


From: Fásiko <fas...@gmail.com>
Date: Tue, 10 Nov 2009 01:18:33 +0100
Subject: [codeigniter-spanish] Re: Problemas con Radio buttons

Reply all
Reply to author
Forward
0 new messages