Foros del Web » Programando para Internet » Javascript »

Problema con checkbox

Estas en el tema de Problema con checkbox en el foro de Javascript en Foros del Web. Hola a todos,primeramente gracias por tomaros el tiempo de leer mi post,vereis no se porque la funcion fvalidar no funciona bien en cuanto a mis ...
  #1 (permalink)  
Antiguo 10/03/2011, 07:02
 
Fecha de Ingreso: marzo-2010
Mensajes: 127
Antigüedad: 14 años, 1 mes
Puntos: 2
Problema con checkbox

Hola a todos,primeramente gracias por tomaros el tiempo de leer mi post,vereis no se porque la funcion fvalidar no funciona bien en cuanto a mis checkbox,en cuanto detecta que no esta ninguno marcado si me da el alert de que marque uno pero tras aceptar el alert y marcar el checkbox me sigue dando el mismo alert..esto me trae de cabeza..porfavor si alguien sabe como solucionarlo..gracias de antemano..salu2.

[HIGHLIGHT="Javascript"]
<script language="javascript">
var x=0;
var opcion=false;
var ok='s';
var band='s';

function fenter(caja,elevento){
var eve=elevento||window.event;
if(eve.keyCode==13){
switch(caja){

case 1:document.getElementById('contraseña').focus();
break;
case 2:document.getElementById('aficiones').focus();
break;
case 3:document.getElementById('apellido').focus();
break;
case 4:document.getElementById('x').focus();
break;

}
}


}

function fvalidar(){

if(document.getElementById('nombre').value==""){
ok='n'
document.getElementById('errorusu').style.visibili ty='visible';
}
else{
document.getElementById('errorusu').style.visibili ty='hidden';
}
if(document.getElementById('apellido').value==""){
ok='n';
document.getElementById('errorape').style.visibili ty='visible';
}
else{
document.getElementById('errorape').style.visibili ty='hidden';
}
if (document.getElementById('pass').value==""){
ok='n';
document.getElementById('errorpass').style.visibil ity='visible';
}
else{
document.getElementById('errorpass').style.visibil ity='hidden';
}


var camposCheck=document.getElementsByName("afi");
while(x<camposCheck.length && !opcion){

if(camposCheck[x].checked){
opcion=true;
}
x++;
}
if(!opcion){alert("tienes que seleccionar alguna opcion");band='n';}






if(ok=='s'&& band=='s'){
document.f.submit();
}

}
</script>[HIGHLIGHT]
Código HTML:
Ver original
  1. <table border=0>
  2. <form action="prueba.php" method=POST name=f>
  3. <tr><td>
  4. Nombre:<input type="text" name=nombre id=nombre onkeypress='fenter(1,event)'><label id=errorusu style="visibility:hidden;color:red">Introduce el nombre</label></td></tr>
  5. <tr><td>Conraseña:<input type="password" name=pass id=pass onkeypress='fenter(2,event)'><label id=errorpass style="visibility:hidden;color:red">Introduce contraseña</label></td></tr>
  6. <tr><td>Aficiones:<input type="text" name=aficiones id=aficiones onkeypress='fenter(3,event)'><label id=erroafic style="visibility:hidden;color:red">Introduce aficiones</label></td></tr>
  7. <tr><td>apellido:<input type="text" name=apellido id=apellido onkeypress='fenter(4,event)'><label id=errorape style="visibility:hidden;color:red">Introduce apellido</label></td></tr>
  8.  
  9. <tr><td>Marque al menos una aficion:<br>
  10. <input type=checkbox name="afi" id="musica" value="musica">Musica<br>
  11. <input type=checkbox name="afi" id="leer" value="leer">Leer<br>
  12. <input type=checkbox name="afi" id="correr" value="correr">Correr<br>
  13. </td></tr>
  14. <tr><td><input type=button name=x id=x value="enviar" onclick='fvalidar();'></td></tr>
  15. </form>
  #2 (permalink)  
Antiguo 10/03/2011, 07:31
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Problema con checkbox

eso ocurre por que aunque encuentre un checkbox seleccionado el ciclo continua. una vez que encuentre uno seleccionado has de parar el ciclo con break
  #3 (permalink)  
Antiguo 10/03/2011, 09:01
 
Fecha de Ingreso: marzo-2010
Mensajes: 127
Antigüedad: 14 años, 1 mes
Puntos: 2
Respuesta: Problema con checkbox

Hola Isabel ,primeramente gracias por responder a mi pedida de socorro con este codigo,veras yo tmb probe lo del break y lo he vuelto a probar pero sigue haciendome lo mismo.
La operacion que realizo es la siguiente:
1º completo todos los campos menos los checkbox
2º me sale el alert de que no he marcado ningun checkbox.
3º acepto el mensaje y marco uno ,dos o tres checkbox .le vuelvo a dar a enviar y me vuelve a salir el alert anterior..
y asi.. sin embargo si mando la pagina con todo marcado me lo valida bien y me hace el submit..pero si hago los pasos anteriores no sale de ese bucle ni con el break;

mi codigo actual es el siguiente:
Código Javascript:
Ver original
  1. var camposCheck=document.getElementsByName("afi");
  2.         while(x<camposCheck.length && !opcion){
  3.            
  4.             if(camposCheck[x].checked){
  5.             opcion=true;   
  6.             break;
  7.             }
  8.             x++;
  9.         }
  10.             if(!opcion){
  11.                 alert("tienes que seleccionar alguna opcion");
  12.                    band='n';
  13.                    }
  14.                  
  15.        
  16.        
  17.         if(ok=='s'&& band=='s'){
  18.         document.f.submit();   
  19.         }


porcierto he estado viendo la consola de errores y me da error en el break ahora..
  #4 (permalink)  
Antiguo 10/03/2011, 13:59
 
Fecha de Ingreso: septiembre-2004
Ubicación: La Plata Argentina
Mensajes: 128
Antigüedad: 19 años, 7 meses
Puntos: 9
Respuesta: Problema con checkbox

Hola.

Lo que sucede es que debes resetear las variables porque tanto x como opcion quedan cargadas con el ultimo valor.

Pasa la definicion de x y opcion dentro de la funcion :
Cita:

function fvalidar(){

var x=0;
var opcion=false;

.....
Saludos
  #5 (permalink)  
Antiguo 10/03/2011, 14:04
 
Fecha de Ingreso: marzo-2010
Mensajes: 127
Antigüedad: 14 años, 1 mes
Puntos: 2
Respuesta: Problema con checkbox

te refieres a que debo de ponerlas al finalizar mi funcion¿?..
porque si las tengo inicializadas pero como globales..,

muchas gracias por responder =)
  #6 (permalink)  
Antiguo 10/03/2011, 14:10
 
Fecha de Ingreso: marzo-2010
Mensajes: 127
Antigüedad: 14 años, 1 mes
Puntos: 2
Respuesta: Problema con checkbox

un mILllllon de gracias ,tenias razon mi error era de que inicilize esas variables como globales y una vez cogian ese valor en la funcion se quedaban con el.
me has salvado la vida,que mañana tengo un examen y llevo todo el dia con esas funciones..
Que tengas un feliz dia sysmadrin =)
  #7 (permalink)  
Antiguo 10/03/2011, 14:21
 
Fecha de Ingreso: septiembre-2004
Ubicación: La Plata Argentina
Mensajes: 128
Antigüedad: 19 años, 7 meses
Puntos: 9
Respuesta: Problema con checkbox

Me alegro !!
Quizas te sea util este consejo : cuando tengas un if o loop o funcion que no te funcione como quieres, ponle dentro un alert y mira los valores que van tomando las variables que controlan el loop/funcion en runtime.

Saludos
  #8 (permalink)  
Antiguo 10/03/2011, 14:38
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Problema con checkbox

cuando te dije que usaras break, me refería a hacerlo así. la explicación no fue lo suficientemente detallada
Cita:
var camposCheck=document.getElementsByName("afi");
        for(var x = 0; ck= camposCheck[x]; x++)
           
            if(ck.checked) break;

Etiquetas: checkbox
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 07:01.