• Jueves 2 de Mayo de 2024, 05:37

Autor Tema:  Problema Funcion Radiobuttons  (Leído 3949 veces)

zaida20

  • Miembro MUY activo
  • ***
  • Mensajes: 213
    • Ver Perfil
Problema Funcion Radiobuttons
« en: Viernes 21 de Septiembre de 2007, 12:37 »
0
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:
---- Las oportunidades que se te presentan son las que son y ellas te llevarán a la felicidad ----

Mollense

  • Miembro de PLATA
  • *****
  • Mensajes: 1755
  • Nacionalidad: ar
    • Ver Perfil
    • http://solocodigo.com/
Re: Problema Funcion Radiobuttons
« Respuesta #1 en: Viernes 21 de Septiembre de 2007, 12:54 »
0
¿Podrías poner el código del botón?¿De qué tipo es este?
"Los que renuncian son más numerosos que los que fracasan" H.F.
"No se cómo sería la III Guerra Mundial, pero la cuarta sería con piedras" A.E.
"Quién no fía no es de fiar..."


...no te quedes mirando.

Avalon

  • Miembro MUY activo
  • ***
  • Mensajes: 448
    • Ver Perfil
Re: Problema Funcion Radiobuttons
« Respuesta #2 en: Viernes 21 de Septiembre de 2007, 13:05 »
0
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

zaida20

  • Miembro MUY activo
  • ***
  • Mensajes: 213
    • Ver Perfil
Re: Problema Funcion Radiobuttons
« Respuesta #3 en: Viernes 21 de Septiembre de 2007, 15:15 »
0
Gracias Avalon

Me sirvió!!!!

Saludos  :hola:
---- Las oportunidades que se te presentan son las que son y ellas te llevarán a la felicidad ----

ing_marco

  • Miembro MUY activo
  • ***
  • Mensajes: 263
    • Ver Perfil
Re: Problema Funcion Radiobuttons
« Respuesta #4 en: Lunes 24 de Septiembre de 2007, 14:59 »
0
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.
MARCO DIAZ
Ing_Marco
Bachiller Ing de Sistemas.
UNT
Trujillo-Peru

Avalon

  • Miembro MUY activo
  • ***
  • Mensajes: 448
    • Ver Perfil
Re: Problema Funcion Radiobuttons
« Respuesta #5 en: Martes 2 de Octubre de 2007, 11:54 »
0
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

ing_marco

  • Miembro MUY activo
  • ***
  • Mensajes: 263
    • Ver Perfil
Re: Problema Funcion Radiobuttons
« Respuesta #6 en: Jueves 4 de Octubre de 2007, 20:37 »
0
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)
MARCO DIAZ
Ing_Marco
Bachiller Ing de Sistemas.
UNT
Trujillo-Peru

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Problema Funcion Radiobuttons
« Respuesta #7 en: Jueves 4 de Octubre de 2007, 23:45 »
0
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

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
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

Avalon

  • Miembro MUY activo
  • ***
  • Mensajes: 448
    • Ver Perfil
Re: Problema Funcion Radiobuttons
« Respuesta #8 en: Viernes 5 de Octubre de 2007, 09:24 »
0
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

ing_marco

  • Miembro MUY activo
  • ***
  • Mensajes: 263
    • Ver Perfil
Re: Problema Funcion Radiobuttons
« Respuesta #9 en: Viernes 5 de Octubre de 2007, 15:06 »
0
Citar
getElementsByName
:rolleyes: se me fue la "S".
Pero muy informativa tu Comentario F_Tanori
MARCO DIAZ
Ing_Marco
Bachiller Ing de Sistemas.
UNT
Trujillo-Peru