Foros del Web » Programando para Internet » Javascript »

Problema con los radio button.

Estas en el tema de Problema con los radio button. en el foro de Javascript en Foros del Web. Hola, estoy trabajando en una página con un formulario el cual antes de reenviarse, comprueba que los datos requeridos están escritos mediante una función de ...
  #1 (permalink)  
Antiguo 03/03/2005, 04:58
 
Fecha de Ingreso: marzo-2005
Mensajes: 197
Antigüedad: 19 años, 2 meses
Puntos: 1
Problema con los radio button.

Hola, estoy trabajando en una página con un formulario el cual antes de reenviarse, comprueba que los datos requeridos están escritos mediante una función de JavaScript.

El problema lo tengo al intentar controlar dos radio button, que por defecto (al cargar la página) están desactivados, y mi idea es que antes de reenviarse a sí misma (la página es recursiva y después vuelvo a comprobar las variables con PHP) la función de control del formulario compruebe que uno de los dos radios vaya checkeado o devuelva el foco al primero de estos.

Gracias por anticipado a cualquier comentario, sugerencia o ayuda.
  #2 (permalink)  
Antiguo 03/03/2005, 10:49
 
Fecha de Ingreso: marzo-2005
Mensajes: 197
Antigüedad: 19 años, 2 meses
Puntos: 1
¿Nadie sabe nada?
  #3 (permalink)  
Antiguo 03/03/2005, 14:00
Avatar de programeitor  
Fecha de Ingreso: febrero-2005
Mensajes: 994
Antigüedad: 19 años, 2 meses
Puntos: 9
comprobar radio button

No se si esto es lo que nesesitas ,pero con lo que cuentas es lo unico que se me ocurre:

el script de comprobacion debe ser asi ,no?


function
comprueba(radio){
var n
for(n=0;n<radio.length;n++)
{

if(radio[n].checked){n='vale';break}
}
if(n=='vale'){---mandar formulario----}else{radio[0].focus()}
}
  #4 (permalink)  
Antiguo 04/03/2005, 05:00
 
Fecha de Ingreso: marzo-2005
Mensajes: 197
Antigüedad: 19 años, 2 meses
Puntos: 1
El script de comprobación comprueba que los campos que muestro en la parte gráfica con asteriscos (obligatorios) no estén nulos y si lo están salta un alert y devuelve el foco al elemento que está nulo (puede ser un radio, un input...)
El problema me viene cuando intento hacer el foco sobre el radio button ya que o el script me da un error o me dice que seleccione uno de los dos ratios aunque les tenga seleccionados...
  #5 (permalink)  
Antiguo 04/03/2005, 09:17
Avatar de programeitor  
Fecha de Ingreso: febrero-2005
Mensajes: 994
Antigüedad: 19 años, 2 meses
Puntos: 9
.

¿no puedes reemplazar mi codigo en tu funcion ,por el que estas utilizando para comprobar los radios?

tufuncion{
comprueba input text
.
comprueba text area
.
comprueba radio buttons //esto lo cambias por lo que viene a continuacion, 'radio' lo cambias por lo que corresponda.

var n
for(n=0;n<radio.length;n++)
{
if(radio[n].checked){n='vale';break}
}
if(n=='vale'){---mandar formulario o continiar con mas comprobaciones----}else{radio[0].focus()}

} //fin de tufuncion.

Si no hay manera, a ver si podemos ver tu script.

.

Última edición por programeitor; 04/03/2005 a las 09:20
  #6 (permalink)  
Antiguo 04/03/2005, 10:00
 
Fecha de Ingreso: marzo-2005
Mensajes: 197
Antigüedad: 19 años, 2 meses
Puntos: 1
El código de la función es este, pero no funciona en el control del radio button.

Código:
<script language="javascript">
  function verifica() 
  {
    if ((document.formulario.nom_comp.value == "") || (document.formulario.nom_comp.value== null))
    {
      alert("Escriba su nombre completo"); 
      document.formulario.nom_comp.focus();
      return false;
    }
    else
    {
      if ((document.formulario.nif.value == "") || (document.formulario.nif.value== null)) 
      {
        alert("Escriba su N.I.F");
        document.formulario.nif.focus();
        return false;
      }
      else
      {
        if ((document.formulario.direccion.value == "") || (document.formulario.direccion.value== null))
        {
          alert("Escriba su dirección");
          document.formulario.direccion.focus();
          return false;
        }
        else
       {
          if ((document.formulario.numero.value == "") || (document.formulario.numero.value== null))
         {
            alert("Escriba el número de su calle");
            document.formulario.numero.focus();
            return false;
         }
         else
         {
            if((document.formulario.poblacion.value == "") || (document.formulario.poblacion.value== null))
            {
               alert("Escriba el nombre de su población"); 
               document.formulario.poblacion.focus();
               return false;
            }
            else
            {
               if((document.formulario.provincia.value == "") || (document.formulario.provincia.value== null))
               {
                 alert("Escriba el nombre de su provincia");
                 document.formulario.provincia.focus();
                 return false;
               }
               else
               {
                  if((document.formulario.cp.value == "") || (document.formulario.cp.value== null))
                  {
                     alert("Escriba su código postal"); 
                     document.formulario.cp.focus();
                     return false;
                  }
                  else
                  {
                     if((document.formulario.telefono.value == "") || (document.formulario.telefono.value== null))
                     {
                        alert("Escriba un teléfono particular");
                        document.formulario.telefono.focus();
                        return false;
                     }
                     else
                     {
                        if((document.formulario.mod_pag.value=="") || (document.formulario.mod_page==null))
                        {
                           alert("Escoja un modo de pago");
                           return false;
                        }
                        else
                        {
                           var i
                           for(i=0;i<document.formulario.mod_pag.length;i++)
                           {
                              if (document.formulario.mod_pag[i].checked)
                              return true;
                           } 
                         }
                       }
                     }
                   }
                 }
               }
             }
           }
         }
}
</script>
  #7 (permalink)  
Antiguo 05/03/2005, 10:48
Avatar de programeitor  
Fecha de Ingreso: febrero-2005
Mensajes: 994
Antigüedad: 19 años, 2 meses
Puntos: 9
.

Este es el codigo y el lugar donde debes incluirlo.


Esto:


if((document.formulario.mod_pag.value=="") || (document.formulario.mod_page==null))
{
alert("Escoja un modo de pago");
return false;
}
else
{
var i
for(i=0;i<document.formulario.mod_pag.length;i++)
{
if (document.formulario.mod_pag[i].checked)
return true;
}
}
}
}
}
}
}
}
}
}
}


lo cambias por:



var
n;
for(n=0;n<document.formulario.mod_pag.length;n++){
if(document.formulario.mod_pag[n].checked){n='vale';break}
}
if(n=='vale'){return true}
else{alert("Escoja un modo de pago");document.formulario.mod_pag[0].focus()}
}
}
}
}
}
}
}
}
}


Ten en cuenta el numero de yaves.

.

Última edición por programeitor; 05/03/2005 a las 10:50
  #8 (permalink)  
Antiguo 08/03/2005, 10:20
 
Fecha de Ingreso: marzo-2005
Mensajes: 197
Antigüedad: 19 años, 2 meses
Puntos: 1
Muchas gracias, finalmente me sirvió
  #9 (permalink)  
Antiguo 11/03/2005, 14:56
Avatar de programeitor  
Fecha de Ingreso: febrero-2005
Mensajes: 994
Antigüedad: 19 años, 2 meses
Puntos: 9
Vale Koden ,me alegro.
La verdad es que tu funcion de comprobacion tiene muchisimas yaves y es complicado saber donde cortar.

Saludos.
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 08:49.