SoloCodigo

Programación Web y Scripting => JavaScript => Mensaje iniciado por: zaida20 en Viernes 21 de Septiembre de 2007, 12:37

Título: Problema Funcion Radiobuttons
Publicado por: zaida20 en Viernes 21 de Septiembre de 2007, 12:37
Hola a todos:

Tengo tres radiobuttons

Código: Text
  1. <input type="radio" name="radio" value="3" >
  2. <input type="radio" name="radio" value="4" >
  3. <input type="radio" name="radio" value="5" >
  4.  

Dependiendo del que elija quiero que vaya a una página o a otra, utilizo el siguiente código:


Código: Text
  1. function validar()
  2. {
  3.   if(document.getElementById('radio').value=='')
  4.   {
  5.     document.getElementById('error').innerHTML="Debe elegir un diseño para su blog";
  6.   }
  7.   else
  8.   {
  9.       if(document.getElementById('radio').value==3)
  10.     {
  11.       document.location.href="plantilla_gral.php";
  12.     }
  13.     if(document.getElementById('radio').value==4)
  14.     {
  15.       document.location.href="plantilla_gral2.php";
  16.     }
  17.     if(document.getElementById('radio').value==5)
  18.     {
  19.       document.location.href="plantilla_gral3.php";
  20.     }
  21.  
  22.   }
  23. }
  24.  


En el botón tengo onclick="validar()"

El problema es que marque el radio que marque o no marque ninguno siempre va a plantill_grl.php ¿Alguien puede decirme que tengo mal?

Gracias y saludos  :hola:
Título: Re: Problema Funcion Radiobuttons
Publicado por: Mollense en Viernes 21 de Septiembre de 2007, 12:54
¿Podrías poner el código del botón?¿De qué tipo es este?
Título: Re: Problema Funcion Radiobuttons
Publicado por: Avalon en Viernes 21 de Septiembre de 2007, 13:05
Hola. Para saber qué elemento está seleccionado tienes que recorrerlos todos.

Código: Text
  1. function validar()
  2. {
  3.   var miradio = document.all.radio;
  4.   var seleccion = false;
  5.   for (i=0; i < miradio.length; i++) {
  6.     if (miradio[i].checked) {
  7.       switch (miradio[i].value) {
  8.         case '3':
  9.           document.location.href="plantilla_gral.php";
  10.           break;
  11.         case '4':
  12.           document.location.href="plantilla_gral2.php";
  13.           break;
  14.         case '5':
  15.           document.location.href="plantilla_gral3.php";
  16.           break;
  17.       }
  18.       seleccion = true;
  19.       break;
  20.     }
  21.   }
  22.   if (!seleccion)
  23.     document.getElementById('error').innerHTML="Debe elegir un diseño para su blog";
  24. }
  25.  
  26.  

Espero te sirva.

Salu2,
Avalon
Título: Re: Problema Funcion Radiobuttons
Publicado por: zaida20 en Viernes 21 de Septiembre de 2007, 15:15
Gracias Avalon

Me sirvió!!!!

Saludos  :hola:
Título: Re: Problema Funcion Radiobuttons
Publicado por: ing_marco en Lunes 24 de Septiembre de 2007, 14:59
Solo hacer una acotacion mas.
Citar
var miradio = document.all.radio;

Esta intruccion esta muy bien, solo si son los unicos radiobuton en el documento, pero si quieres ser mas especifico deberias hacerlo de esta forma:

En el name de todos tus radiobuton ponerles un nombre como 'rbtnTipo', luego
Citar
var miradio = document.getElementByName('rbtnTipo');
esta linea deberia reemplazar a la anterior y el resto debe ser de la misma forma.
Saludos.
Solo para dejar claro que el codigo anterior esta muy bien trabajado, eso solo es un adicional.

Atte
Marco Diaz.
Título: Re: Problema Funcion Radiobuttons
Publicado por: Avalon en Martes 2 de Octubre de 2007, 11:54
Cita de: "ing_marco"
Solo hacer una acotacion mas.
Citar
var miradio = document.all.radio;

Esta intruccion esta muy bien, solo si son los unicos radiobuton en el documento, pero si quieres ser mas especifico deberias hacerlo de esta forma:

En el name de todos tus radiobuton ponerles un nombre como 'rbtnTipo', luego
Citar
var miradio = document.getElementByName('rbtnTipo');
esta linea deberia reemplazar a la anterior y el resto debe ser de la misma forma.
Saludos.
Solo para dejar claro que el codigo anterior esta muy bien trabajado, eso solo es un adicional.

Atte
Marco Diaz.
En este caso el nombre puede resultar engañoso, pero document.all.radio no hace referencia a todos los elementos de tipo radio button que se encuentren en el documento sino solo a los que tengan radio como nombre.

Este es el código que puso zaida20

Citar
<input type="radio" name="radio" value="3" >
<input type="radio" name="radio" value="4" >
<input type="radio" name="radio" value="5" >


Pero podría tener perfectamente estos otros radio buttons en el mismo documento sin necesidad de variar ninguna instrucción de la función validar.

Citar
<input type="radio" name="radio2" value="6" >
<input type="radio" name="radio2" value="7" >
<input type="radio" name="radio2" value="8" >

A éstos se podría hacer referencia mediante document.all.radio2.

Creo que era conveniente aclarar que document.all.radio no hace referencia al tipo de elemento sino a su nombre, ya que al coincidir ambos en este caso se ha podido crear algo de confusión.


Salu2,
Avalon
Título: Re: Problema Funcion Radiobuttons
Publicado por: ing_marco en Jueves 4 de Octubre de 2007, 20:37
Pues entoces hace exactamente lo mismo.
Porque tu le estas poniendo el mismo nombre, solo que tu lo llamas de otra forma.

Citar
var miradio = document.all.radio;
es igual a poner
Citar
var miradio = document.getElementByName('radio');

al final, debemos el problema ya fue resuelto  B)
Título: Re: Problema Funcion Radiobuttons
Publicado por: F_Tanori en Jueves 4 de Octubre de 2007, 23:45
Ya que el problema esta resuelto y ahora el hilo es de aclaraciones :P

Seria importante mencionar que

Código: Text
  1. document.all
  2.  

Es exclusivo de internet explorer y aunque supuestamente firefox lo soportara en versiones nuevas

https://bugzilla.mozilla.org/show_bug.cgi?id=248549 (https://bugzilla.mozilla.org/show_bug.cgi?id=248549)

Por lo pronto no funciona ni en la version 2.0.0.7 (tal vez en una mayor)

El estandar es
Código: Text
  1. document.getElementById()
  2.  

Para utilizarlo "aparentemente" como getElementsByName() (como menciona Avalon )

Código: Text
  1. document.all['radio'];
  2.  
en lugar de

Código: Text
  1. document.all.radio;
  2.  

aunque no es recomendable usar instrucciones no estandares por eso IE sigue haciendo lo que se le da la gana, porque les seguimos la corriente


Otro detalle:

el metodo no es <!--xc1--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>XCODE </td></tr><tr><td id='XCODE'><!--exc1-->getElementByName <!--xc2--></td></tr></table><div class='postcolor'><!--exc2-->

sino<!--xc1--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>XCODE </td></tr><tr><td id='XCODE'><!--exc1--> getElementsByName<!--xc2--></td></tr></table><div class='postcolor'><!--exc2-->

Saludos
Título: Re: Problema Funcion Radiobuttons
Publicado por: Avalon en Viernes 5 de Octubre de 2007, 09:24
Cita de: "ing_marco"
Pues entoces hace exactamente lo mismo.
Porque tu le estas poniendo el mismo nombre, solo que tu lo llamas de otra forma.

Citar
var miradio = document.all.radio;
es igual a poner
Citar
var miradio = document.getElementByName('radio');

al final, debemos el problema ya fue resuelto  B)
Por supuesto que hace lo mismo :)

La aclaración venía únicamente porque de tu frase

Citar
Esta intruccion esta muy bien, solo si son los unicos radiobuton en el documento, pero si quieres ser mas especifico deberias hacerlo de esta forma

se puede entender que de la forma que puse yo se hace referencia a TODOS los radios del documento. Si te referías a que es mejor usar una nomenclatura más clara para los nombres estoy de acuerdo en que ponerle al elemento exactamente el mismo nombre que su tipo es horrible.

@F_Tanori estoy de acuerdo contigo en el uso del estándar getElementById.


Salu2,
Avalon
Título: Re: Problema Funcion Radiobuttons
Publicado por: ing_marco en Viernes 5 de Octubre de 2007, 15:06
Citar
getElementsByName
:rolleyes: se me fue la "S".
Pero muy informativa tu Comentario F_Tanori