Foros del Web » Programando para Internet » Javascript »

Condiciones if()

Estas en el tema de Condiciones if() en el foro de Javascript en Foros del Web. Buenas.. Necesito saber si de alguna manera en un IF yo puedo saber si almenos de 1 checkbox fue marcado les muestro un ejemplo para ...
  #1 (permalink)  
Antiguo 21/05/2011, 18:28
Avatar de Maganius  
Fecha de Ingreso: septiembre-2010
Mensajes: 310
Antigüedad: 14 años, 1 mes
Puntos: 10
Condiciones if()

Buenas..


Necesito saber si de alguna manera en un IF yo puedo saber si almenos de 1 checkbox fue marcado les muestro un ejemplo para que entiendan mejor:

if((convenir == "") || (cruces == ""){
}

lo que hace ese IF es decir si convenir O cruces estan vacios....

Mi intencion es saber si de alguna manera puedo decir que:

if((convenir == "") || (cruces == ""){
}

Si algunos de los 2 fue marcado que el otro no tenga condicion...

osea si Convenir fue clickeado que Cruces no tome parte de la condicion ya que quiero evaluar si alguno de los 2 fue clickeado solamente..

Gracias...

Att: Maganius
  #2 (permalink)  
Antiguo 21/05/2011, 19:08
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 14 años, 5 meses
Puntos: 310
Respuesta: Condiciones if()

Creo que lo que necesitas es un XOR. Lamentablemente esto no existe en JS, pero es fácilmente imitable:
Código Javascript:
Ver original
  1. function XOR(a, b){ return (a || b) && !(a && b); }
  2. XOR(true, true); // false
  3. XOR(false, false); // false
  4. XOR(true, false); // true
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #3 (permalink)  
Antiguo 21/05/2011, 19:18
Avatar de Maganius  
Fecha de Ingreso: septiembre-2010
Mensajes: 310
Antigüedad: 14 años, 1 mes
Puntos: 10
Respuesta: Condiciones if()

Gracias por tu respuesta _cronos2

La verdad que desconocia esta funcion XOR por lo cual no se como utilizarla, pero de todas formas te hago otra pregunta, yo tengo que verificar si alguno de mis 11 checkbox fueron marcados, aunque sea solo 1 como minimo.

¿Como podria utilizar XOR para saber si algunos de mis 11 checkbox fue marcado?

Gracias
  #4 (permalink)  
Antiguo 21/05/2011, 19:24
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 14 años, 5 meses
Puntos: 310
Respuesta: Condiciones if()

Creo que te entendí mal
Si lo que quieres comprobar es si al menos uno de los 11 checkbox fueron marcados, debes usar la propiedad checked:
Cita:
if(
chk1.checked ||
chk2.checked ||
...
chk10.checked ||
chk11.checked
)
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #5 (permalink)  
Antiguo 21/05/2011, 19:31
Avatar de Maganius  
Fecha de Ingreso: septiembre-2010
Mensajes: 310
Antigüedad: 14 años, 1 mes
Puntos: 10
Respuesta: Condiciones if()

Ohhh, tienes razon como se me pasó!!!

Lo pruebo y te comento como me fue.

Muchas gracias
  #6 (permalink)  
Antiguo 21/05/2011, 19:38
Avatar de Maganius  
Fecha de Ingreso: septiembre-2010
Mensajes: 310
Antigüedad: 14 años, 1 mes
Puntos: 10
Respuesta: Condiciones if()

No me funciono, nose porque :/

lo tengo asi:

Código Javascript:
Ver original
  1. var convenir    = document.upForm.convenir.checked;
  2. var cruces  = document.upForm.cruces.checked;
  3.  
  4. if((convenir) || (cruces)){
  5.     alert("Debes elegir almenos un checkbox");
  6.     return;
  7. }

No salta error, solamente no hace la comprobacion :/
  #7 (permalink)  
Antiguo 21/05/2011, 19:58
Avatar de Maganius  
Fecha de Ingreso: septiembre-2010
Mensajes: 310
Antigüedad: 14 años, 1 mes
Puntos: 10
Respuesta: Condiciones if()

Ya hice que lo compruebe lo hice asi:

Código Javascript:
Ver original
  1. var convenir    = document.upForm.convenir.checked;
  2.     var cruces  = document.upForm.cruces.checked;
  3.      
  4.     if((convenir == false) || (cruces == false)){
  5.         alert("Debes elegir almenos un checkbox");
  6.         return;
  7.     }

pero no me sirve, ya que convenir fue activado pero cruces no, entonces convenir va hacer igual a TRUE pero cruces va hacer false entonces me salta el alert...

Nose si me explique muy bien.
  #8 (permalink)  
Antiguo 22/05/2011, 05:09
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años, 5 meses
Puntos: 834
Respuesta: Condiciones if()

A ver si te entendí:
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<
title>Documento sin título</title>
<
script type="text/javascript">
function 
ver(f){
    var 
els=f.getElementsByTagName('input');
    var 
checks=0;
    for(var 
i=0,ch;ch=els[i];i++){
        if(
ch.type=='checkbox' && ch.checked){
            
checks=1;
            
alert('al menos uno');
            break;
        }    
    }
    if(!
checks)alert('ninguno');
    return 
checks;
}
</script>

</head>

<body>
<form id="form1" name="form1" method="post" action="" onsubmit="return ver(this)">
<input name="" type="checkbox" value="" />
<input name="" type="checkbox" value="" />
<input name="" type="checkbox" value="" />
<input name="" type="checkbox" value="" />
<input name="" type="checkbox" value="" />
<input name="" type="checkbox" value="" />
<input name="" type="checkbox" value="" />
<input name="" type="checkbox" value="" />
<input name="" type="checkbox" value="" />
<input name="" type="checkbox" value="" />
<input name="" type="checkbox" value="" />
<input name="" type="submit" value="Enviar" />
</form>
</body>
</html> 
Cita:
Creo que lo que necesitas es un XOR. Lamentablemente esto no existe en JS, pero es fácilmente imitable
amigo _cronos2, tengo que contradecirte:
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<
title>Documento sin título</title>
<
script type="text/javascript">
function 
out(t){
    
document.getElementById('log').innerHTML+=t+'<br />';    
}
function XOR(
ab){ return (|| b) && !(&& b); }
onload=function(){
    
out(XOR(truetrue)); // false
    
out(XOR(falsefalse)); // false
    
out(XOR(truefalse)); // true
    
out('---------------------');
    
out(true true);
    
out(false false);
    
out(true false);
}
</script>
</head>

<body>
<div id="log"></div>
</body>
</html> 
  #9 (permalink)  
Antiguo 22/05/2011, 06:01
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 14 años, 5 meses
Puntos: 310
Respuesta: Condiciones if()

Cita:
Iniciado por Panino5001 Ver Mensaje
amigo _cronos2, tengo que contradecirte:
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<
title>Documento sin título</title>
<
script type="text/javascript">
function 
out(t){
    
document.getElementById('log').innerHTML+=t+'<br />';    
}
function XOR(
ab){ return (|| b) && !(&& b); }
onload=function(){
    
out(XOR(truetrue)); // false
    
out(XOR(falsefalse)); // false
    
out(XOR(truefalse)); // true
    
out('---------------------');
    
out(true true);
    
out(false false);
    
out(true false);
}
</script>
</head>

<body>
<div id="log"></div>
</body>
</html> 
WTF? Toda la vida pensando que no existía, y supongo que fue porque entendí mal
El único inconveniente que le veo a la implementación nativa es que hay que pasarle booleanos "estrictos", porque si no se vuelve loco. Ej:
Cita:
window ^ !window; // 0
!!window ^ !window; // 1
Quizá fue por eso que entendí mal, sí existe pero es un poco exquisito
Ahí te va otro paquete de karma.
Saludos :D
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #10 (permalink)  
Antiguo 22/05/2011, 10:10
Avatar de Maganius  
Fecha de Ingreso: septiembre-2010
Mensajes: 310
Antigüedad: 14 años, 1 mes
Puntos: 10
Respuesta: Condiciones if()

No pude :! intente con esto

Código Javascript:
Ver original
  1. function ver(f){
  2.     var els=f.getElementById('fo');
  3.     var checks=0;
  4.     for(var i=0,ch;ch=els[i];i++){
  5.         if(ch.type=='checkbox' && ch.checked){
  6.             checks=1;
  7.             alert('al menos uno');
  8.             break;
  9.         }    
  10.     }
  11.     if(!checks)alert('ninguno');
  12.     return checks;
  13. }

Código HTML:
Ver original
  1. <form id="form1" name="form1" method="post" action="" onsubmit="return ver(this)">
  2. <input id="fo" type="checkbox" value="" />
  3. <input id="fo" type="checkbox" value="" />
  4. <input id="fo" type="checkbox" value="" />
  5. <input id="fo" type="checkbox" value="" />
  6. <input id="fo" type="checkbox" value="" />
  7. <input id="fo" type="checkbox" value="" />
  8. <input id="fo" type="checkbox" value="" />
  9. <input id="fo" type="checkbox" value="" />
  10. <input id="fo" type="checkbox" value="" />
  11. <input id="fo" type="checkbox" value="" />
  12. <input id="fo" type="checkbox" value="" />
  13. <input type="submit" value="Enviar" />
  14. </form>

y no hace nada, si lo pruebo con el ejemplo que me dio Panino5001 funciona, pero eso comprueba todos los INPUT y eso no me serviria tendria que ser por ID pero al momento de adaptarlo no funciona :/
  #11 (permalink)  
Antiguo 22/05/2011, 10:15
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 14 años, 5 meses
Puntos: 310
Respuesta: Condiciones if()

a) getElementById es un método de document única y exclusivamente, porque [Razón b]
b) Las ids del documento deben ser únicas, no puede haber dos elementos con la misma id.
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #12 (permalink)  
Antiguo 22/05/2011, 10:19
Avatar de Maganius  
Fecha de Ingreso: septiembre-2010
Mensajes: 310
Antigüedad: 14 años, 1 mes
Puntos: 10
Respuesta: Condiciones if()

Lo intenté hacer con getElementsByName('fo');

Pero tampoco :/ :S
  #13 (permalink)  
Antiguo 22/05/2011, 10:26
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: Condiciones if()

Es que en realidad lo que dijo _cronos2 esta bien, no existe el logical XOR, el ^ es el bitwise XOR que no es lo mismo.
__________________
http://es.phptherightway.com/
thats us riders :)
  #14 (permalink)  
Antiguo 22/05/2011, 10:32
Avatar de Maganius  
Fecha de Ingreso: septiembre-2010
Mensajes: 310
Antigüedad: 14 años, 1 mes
Puntos: 10
Respuesta: Condiciones if()

Aun no pude, voy a seguir revisando el codigo aver si le allo la vuelta.

Última edición por Maganius; 22/05/2011 a las 10:43
  #15 (permalink)  
Antiguo 22/05/2011, 11:58
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años, 5 meses
Puntos: 834
Respuesta: Condiciones if()

Entiendo que tenés varios "grupos" de checkboxes y lo que necesitás es evaluar por grupo. Si es así, lo que podés hacer es agrupar por atributo class en lugar de name, ya que varios checkboxes con el mismo name sería un sinsentido. Haciéndolo así quizá te sirva esto:
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<
title>Documento sin título</title>
<
script type="text/javascript">
if(
typeof document.getElementsByClassName !='function'){
    
document.getElementsByClassName=function(searchClass,node,tag) {
    
//Dustin Díaz implementation
    
var classElements = new Array();

    if ( 
node == null )

        
node document;

    if ( 
tag == null )

        
tag '*';

    var 
els node.getElementsByTagName(tag);

    var 
elsLen els.length;

    var 
pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");

    for (
00elsLeni++) {

        if ( 
pattern.test(els[i].className) ) {

            
classElements[j] = els[i];

            
j++;

        }

    }

    return 
classElements;

}    
}
function 
ver(f){
    var 
els=document.getElementsByClassName('dos');
    var 
checks=0;
    for(var 
i=0,ch;ch=els[i];i++){
        if(
ch.type=='checkbox' && ch.checked){
            
checks=1;
            
alert('al menos uno');
            break;
        }    
    }
    if(!
checks)alert('ninguno');
    return 
checks;
}
</script>

</head>

<body>
<form id="form1" name="form1" method="post" action="" onsubmit="return ver(this)">
<input class="uno" name="" type="checkbox" value="" />
<input class="uno" name="" type="checkbox" value="" />
<input class="uno" name="" type="checkbox" value="" />
<input class="uno" name="" type="checkbox" value="" />
<input class="uno" name="" type="checkbox" value="" />
<input class="uno" name="" type="checkbox" value="" />
<input class="uno" name="" type="checkbox" value="" />
<br />

<input class="dos" name="" type="checkbox" value="" />
<input class="dos" name="" type="checkbox" value="" />
<input class="dos" name="" type="checkbox" value="" />
<input class="dos" name="" type="checkbox" value="" />
<input class="dos" name="" type="checkbox" value="" />
<input class="dos" name="" type="checkbox" value="" />

<input name="" type="submit" value="Enviar" />
</form>
</body>
</html> 
Cita:
window ^ !window; // 0
!!window ^ !window; // 1
En efecto, es un operador a nivel de bits, no un operador lógico
  #16 (permalink)  
Antiguo 22/05/2011, 13:00
Avatar de Maganius  
Fecha de Ingreso: septiembre-2010
Mensajes: 310
Antigüedad: 14 años, 1 mes
Puntos: 10
Respuesta: Condiciones if()

Gracias a todos por su ayuda.

Lo pude solucionar de la siguiente manera:

Código Javascript:
Ver original
  1. var Forma=document.getElementsByName('Forma[]');
  2.     var checks=false;
  3.     if(checks==false){
  4.     for(var i=0,FP;FP=Forma[i];i++){
  5.             if(FP.checked){
  6.                 checks=true;
  7.             }  
  8.            
  9.     }
  10. }
  11.     if(!checks){
  12.         alert('Ninguno seleccionado');
  13.         return;
  14.     }


Todos los checkbox tienen el mismo nombre.

Luego para sacar el value de cada uno, hago un foreach y un implode separandolos con coma (,)

Etiquetas: condiciones
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:28.