Foros del Web » Programando para Internet » Javascript »

¿Por qué no funciona este código?

Estas en el tema de ¿Por qué no funciona este código? en el foro de Javascript en Foros del Web. Hola. Copio un pequeño ejemplito con el que pretendía practicar la entrada de información mediante INPUT TYPE="radio" ... El caso es que pretendo que la ...
  #1 (permalink)  
Antiguo 19/04/2007, 16:37
 
Fecha de Ingreso: abril-2007
Ubicación: Madrid
Mensajes: 35
Antigüedad: 17 años, 1 mes
Puntos: 0
¿Por qué no funciona este código?

Hola.

Copio un pequeño ejemplito con el que pretendía practicar la entrada de información mediante INPUT TYPE="radio" ...
El caso es que pretendo que la variable creada al efecto se cargue con el "value" atribuido a cada alternativa de los RADIOs.
Pero por más pruebas que hago el valor se hace indeterminado (undefined).

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<title>Untitled</title>
<script type="text/javascript" language="JavaScript">
<!--
function mostrar(formulario)
{
var a;
a = document.formulario.numero.value;
alert("Valor seleccionado: " + a);
}
// -->
</script>
</head>
<body>
<form action="mailto:[email protected]" method="post" name="formulario">
valor 1 <input name="numero" type="radio" value="1" checked/>
valor 2 <input name="numero" type="radio" value="2" />
valor 3 <input name="numero" type="radio" value="3" />
<input name="enviar" type="submit" value="Mandarlo" onclick="mostrar(this.form)"/>
</form>
</body>
</html>

¿Qué hago mal?

Gracias.

ngr
  #2 (permalink)  
Antiguo 19/04/2007, 17:03
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Re: ¿Por qué no funciona este código?

prueba con esta funcion
Código HTML:
<script type="text/javascript" language="JavaScript">
<!--
function mostrar()
{
var a;
for(var i=0, i<=2, i++)
{
if(document.forms['formulario'].numero[i].checked)
   a = document.forms['formulario'].numero[i].value;
}
alert("Valor seleccionado: " + a);
}
// -->
</script> 
los radios al ser mas de uno tener el mismo nombre se convierte automaticamente en arreglo y como tal hay que tratarlos.

saludos.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #3 (permalink)  
Antiguo 20/04/2007, 08:17
 
Fecha de Ingreso: abril-2007
Ubicación: Madrid
Mensajes: 35
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: ¿Por qué no funciona este código?

Hola, eits.

Lleva razón, tu función me ha funcionado perfectamente. Muchas gracias.

Veo que NINGÚN manual de los que he consultado por internet, NI el mío (libro impreso -muy caro y poco claro-), describían bien y completamente el manejo de este modo de recoger información; sólo lo hacen someramente, sin detallar y sin ejemplos "que funcionen".

Ya estaba a punto de remodelar esta parte de mi código, desesperado por no dar con la respuesta y tratando de eludir su empleo. En otros lenguajes de programación (no scripts) los "radio buttons" se programan de forma más sencilla, es decir, al seleccionarse con el punto negro en su interior, ya detectan y transmiten, cuál de las alternativas se ha activado... (¡Cuánto me queda por aprender!)

Gracias de nuevo. Saludos a todos.

ngr
  #4 (permalink)  
Antiguo 20/04/2007, 10:23
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Re: ¿Por qué no funciona este código?

veo con gusto que estas prendiendo a programar en javascript, y si, hay mucho que aprender pero con mucha paciencia alcanzaras tus metas, pero para ser sincero, debo decir que yo no he comprado ningun libro, porque no he visto ninguno que cumpla con mis espectativas y la verdad lo que he aprendido ha sido buscando en google y por supuesto, principalmente aqui en el foro.

ahora cambiando un poco el tema, aqui tienes el código mejorado
Código HTML:
<html>
<head>
<title>Untitled</title>
<script type="text/javascript" language="JavaScript">
<!-- function mostrar()
  {
      var a;
      for(var i=0, i<=2, i++) 
         {
            if(document.forms['formulario'].numero[i].checked)
                    a = document.forms['formulario'].numero[i].value;
          }
      if(confirm("Valor seleccionado: " + a))
          {return true;}
      else
          {return false;}
   }
 // --> </script>
</head>
<body>
<form action="mailto:[email protected]" method="post" name="formulario" onsubmit="javascript:return mostrar()">
valor 1 <input name="numero" type="radio" value="1" checked/>
valor 2 <input name="numero" type="radio" value="2" />
valor 3 <input name="numero" type="radio" value="3" />
<input name="enviar" type="submit" value="Mandarlo" />
</form>
</body>
</html> 
con esto se podrá cancelar el envio si no es la opción que se queria selecionar.

saludos.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #5 (permalink)  
Antiguo 21/04/2007, 09:46
 
Fecha de Ingreso: abril-2007
Ubicación: Madrid
Mensajes: 35
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: ¿Por qué no funciona este código?

Hola de nuevo, eits.

Lo del manual... Bueno, en mi caso se trata de aprobar una asignatura. El libro es malo, pero al menos sirve como referencia y visión panorámica de todo (o casi todo) lo que uno debería saber para hacer el ejercicio de práctica.

Desde luego puedo asegurar que los detalles importantes los estoy aprendiendo sobre todo aquí, en este foro, y en un par de páginas web que tambien consulto. Muchas gracias a todos...

AH!, si apruebo hay cerveza para todos (me temo que sólo cerveza virtual).

Un detalle, sin mayor importancia, en tus códigos: veo que en ambos casos, al construir el bucle for, empleas comas "," como separadores. A mi sólo me funciona si pongo ";"

Código PHP:
 var i;
var 
maximo;
   for (
0<= maximoi++) {... 
Desde luego no ha sido impedimento para comprender la idea base: que los valores de los "RADIO" forman un array que hay que explorar buscando el que esté seleccionado (checked).

Gracias a todos. Un abrazo.

ngr
  #6 (permalink)  
Antiguo 21/04/2007, 10:46
 
Fecha de Ingreso: abril-2007
Ubicación: Madrid
Mensajes: 35
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: ¿Por qué no funciona este código?

... Se me olvidaba, eits.
¿Hay alguna diferencia en llamar a las funciones de validación entre:

<form action="mailto:[email protected]" method="post" name="formulario" onsubmit="javascript:return mostrar()">

o

<input name="enviar" type="submit" value="Mandarlo" onclick="mostrar(this.form)"/>

¿Alguna reporta ventaja sobre la otra?

ngr
  #7 (permalink)  
Antiguo 21/04/2007, 16:10
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Re: ¿Por qué no funciona este código?

bien, lo de las comas(,) es un error mio, tienes toda la razón se utiliza el punto y coma(;) y que bueno que no te confundí, sin embargo el responder esto
Cita:
Iniciado por ngr777 Ver Mensaje
¿Alguna reporta ventaja sobre la otra?
te digo por que lo uso así
cuando llamo a la funcion de esta manera onsubmit="return mostrar()" espero devolver un true o false para decirle al navegador que envie si es true o de lo contrario que aborte el envio en caso de ser false y si te fijas en la funcion devuelve true o false segun lo que sucedad, sin embargo, hay quienes dicen que no es la mejor manera y otros que si, simplemente creo yo, es cuestion de buscar un estilo(el que mejor te funcione y a mi me funciona ese que pongo).

saludos.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #8 (permalink)  
Antiguo 22/04/2007, 05:31
 
Fecha de Ingreso: abril-2007
Ubicación: Madrid
Mensajes: 35
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: ¿Por qué no funciona este código?

Hola, eits

Todo claro, me resultó de gran ayuda.

Gracias. Saludos para todos.

ngr
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:21.