Foros del Web » Programando para Internet » Javascript »

check boxs y firefox

Estas en el tema de check boxs y firefox en el foro de Javascript en Foros del Web. Ante todo un saludo, Mi problema es el siguiente, tengo el siguiente script: Código: function cuentaopc(pregunta) { for (i=0; i<arreglocancheck.length; i++) { if (arreglocancheck[i][0]==pregunta) cantidad_opciones ...
  #1 (permalink)  
Antiguo 10/03/2005, 12:01
 
Fecha de Ingreso: enero-2005
Mensajes: 47
Antigüedad: 19 años, 3 meses
Puntos: 0
check boxs y firefox

Ante todo un saludo,


Mi problema es el siguiente, tengo el siguiente script:
Código:
function cuentaopc(pregunta)
{
	
	for (i=0; i<arreglocancheck.length; i++)
	{		
		if (arreglocancheck[i][0]==pregunta)
			cantidad_opciones = arreglocancheck[i][1];
	}
	for (i=0; i<arreglocheck.length; i++)
	{
		if (arreglocheck[i][0]==pregunta)
		{	
			var contador = 0;		
			for (j=1; j<arreglocheck[i].length; j++)
			{				
				var check_name = arreglocheck[i][j];				
				if (document.getElementById(check_name).checked)
				{
					contador++;
					if (contador > cantidad_opciones)			
                          document.getElementById(check_name).checked = false;
				}
			}					
		}
	}
	var mensaje = "Solo puede seleccionar " + cantidad_opciones + " opciones";
	if (contador>cantidad_opciones)	
		alert(mensaje);
	
}
que utilizo para que el usuario no seleccione más de determinado número de opciones, de más esta decir que las opciones son checkbox. El código funciona perfectamente en IE pero en firefox no.

Si hay alguien que sepa como solucionar esto se lo agradecería mucho.
  #2 (permalink)  
Antiguo 10/03/2005, 12:15
 
Fecha de Ingreso: enero-2005
Mensajes: 47
Antigüedad: 19 años, 3 meses
Puntos: 0
ups, me falto colocar que el script se ejecuta en el evento onclick del checkbox y que el arreglo arreglocancheck contiene la pregunta y la cantidad de opciones máxima a marcar por el usuario.
  #3 (permalink)  
Antiguo 10/03/2005, 12:25
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
Este no te serviría, no?

Código PHP:
<html>
<
head>
<
title>Untitled</title><script>
maximo=5
c
=0;
function 
prueba(esto){
c+=(esto.checked)?1:-1;
if(
c>maximo){
alert("No chequee más de "+maximo+"!");
esto.checked=false;
c-=1;
}

}

</script>
</head>

<body>
<form action ="javascript:alert('Mandandooo!!!')" name="aa323" >
<input type="checkbox" name="pedpe1" onclick="prueba(this)"><br />
<input type="checkbox" name="pedpe2" onclick="prueba(this)"><br />
<input type="checkbox" name="pedpe3" onclick="prueba(this)"><br />
<input type="checkbox" name="pedpe4" onclick="prueba(this)"><br />
<input type="checkbox" name="pedpe5" onclick="prueba(this)"><br />

<input type="submit" name="pepe"></form>


</body>
</html> 
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #4 (permalink)  
Antiguo 10/03/2005, 13:07
 
Fecha de Ingreso: enero-2005
Mensajes: 47
Antigüedad: 19 años, 3 meses
Puntos: 0
Karlankas creo que no pero igual voy a probar, la situación es la siguiente, genero una página dinámicamente con preguntas, por eso uso un arreglo para guardar la cantidad máxima de opciones a chequear en una pregunta. Tambien me falto decir que en el arreglo, arreglocheck, estan guardados los nombres de los checkbox.


Gracias
  #5 (permalink)  
Antiguo 10/03/2005, 13:53
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
He hecho algunos cambios en tu script. Prueba a ver si te funciona. Y luego me comentas.

Es importante que si tienes más de un form en el código pongas entre los corchetes el name del form. Aquí:

document.forms[0]

Código PHP:
function cuentaopc(pregunta)
{
    for (
i=0i<arreglocancheck.lengthi++){
            
        if (
arreglocancheck[i][0]==pregunta){
            
cantidad_opciones arreglocancheck[i][1];
            var 
mensaje "Solo puede seleccionar " cantidad_opciones " opciones";
            var 
num=i;
            break
        }
    }
    var 
contador 0;        
    for (
j=1j<arreglocheck[num].lengthj++){
                        
        var 
check_name arreglocheck[num][j];                
        
        
contador+=(document.forms[0][check_name].checked)?1:0;
        
        if (
contador cantidad_opciones){            
                
document.forms[0][check_name].checked false;
        }
                            
        
    }

    if (
contador>cantidad_opciones){alert(mensaje);}
    

Ya me dirás!
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #6 (permalink)  
Antiguo 10/03/2005, 13:59
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
De todas formas, podrías juntar arreglocheck y arreglocancheck en una sola variable. Poniendo como valor de arreglocheck[i][0] el número de respuestas válido. Y al llamar a la función en pregunta metes i. Es decir, el número del primer número del binomio del array. Así te ahorrarías mucho código.

No sé si me explico...
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #7 (permalink)  
Antiguo 10/03/2005, 14:05
 
Fecha de Ingreso: enero-2005
Mensajes: 47
Antigüedad: 19 años, 3 meses
Puntos: 0
Perfecto Karlankas un millón de gracias por tu ayuda, no solo se solucionó el problema sino que mejoraste el código

Gracias
  #8 (permalink)  
Antiguo 10/03/2005, 14:06
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
Me alegro de que te funcionara! Si tienes más dudas de cómo hacer algo escribe y lo comentamos!
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
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 20:54.