Foros del Web » Programando para Internet » Javascript »

Por qué no existe onCheck?

Estas en el tema de Por qué no existe onCheck? en el foro de Javascript en Foros del Web. ¿¿¿Por qué nadie lo inventó??? ... Lo que necesito es saber cómo demonios llamar una function sólo cuando un checkbox pase de estar desmarcado a ...
  #1 (permalink)  
Antiguo 14/04/2004, 11:17
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 2 meses
Puntos: 535
Por qué no existe onCheck?

¿¿¿Por qué nadie lo inventó???


...

Lo que necesito es saber cómo demonios llamar una function sólo cuando un checkbox pase de estar desmarcado a marcado y no al onClick (que también la llama cuando está marcado y pasa a desmarcado)

Cómo se soluciona eso?

Gracias
  #2 (permalink)  
Antiguo 14/04/2004, 11:33
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 2 meses
Puntos: 535
bueno, la solución que le encuentro es viendo si el check está a true al hacerle click:


if(aquelCheck == blablabla && esteCheck_Checked == true){
...saranasa...
}


Y me sirve... pero ¿hay otra manera?
  #3 (permalink)  
Antiguo 14/04/2004, 12:04
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Re: Por qué no existe onCheck?

Cita:
Mensaje Original por dazuaga
¿¿¿Por qué nadie lo inventó???
sos divino vió...

La verdad es que podrían haberlo inventado... pero no lo han hecho.

No queda otra que la solución que le encontraste, aunque si explicoteas un poco qué es lo que pretendes puede que haya alguna buena forma de sintetizarlo para que "casi" ni se note que el oncheck no lo inventaron
  #4 (permalink)  
Antiguo 14/04/2004, 13:29
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 2 meses
Puntos: 535
Es medio complicado de explicar, orque ni yo sé con exactitud cómo quiero que responda un formulario ante determinadas combinaciones de checkboxes y de casos posibles

Por si te interesa saber, los casos son: que exista sólo 1 registro, sólo 2 o más de 2 (en donde cada "registro" es un textbox acompañado de dos checkbox formando una especie de "tabla de datos")
Para cada uno de estos casos, hay distintos comportamientos de una "columna de checkboxes" según lo que se seleccione en la otra.

Igual, esta explicación no es para desarrollar una duda y así solicitar ayuda. Por el momento me arreglo con mis para-nada-sintéticos códigos . Además, me diste la respuesta que buscaba (o la que no quería oir ):


Cita:
No queda otra que la solución que le encontraste

Salú y gracias por existir
  #5 (permalink)  
Antiguo 14/04/2004, 14:15
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
si existiera el oncheck... ¿cómo lo usarías en este caso??
  #6 (permalink)  
Antiguo 14/04/2004, 15:15
 
Fecha de Ingreso: febrero-2001
Mensajes: 1.374
Antigüedad: 23 años, 2 meses
Puntos: 11
Hola diego, te cuento que hace unos mese se me presento el mismo problema. Y mas alla de que ya encontraste una posible solucion, te recomiendo otra, la que use yo.

Veamos si mi caso es similar al tuyo. Tenia 1 checkbox y un input para subir archivos. Cuando alguien tildaba el checkbox se abria un layer con opciones mas avanzadas, y ejecutaba una funcion. El tema es que si hacian click de nuevo tenia que llamar de nuevo a la misma funcion y cerrar el layer. Para esto necesitaba saber 2 cosas: Si el checkbox estaba tildado o no. Lo que hice fue declarar 1 variable global y asignarle el valor "falso". Y si hacian click en el checkbox el valor cambiaba, de falso a verdadero y de verdadero a falso. Entonces en la funcion comprobaba con un if/then si el checkbox estaba activado o no.

Te escribo un ejemplo:

Código PHP:
<script>
var 
cBox false;
</script>

<form>
<input type="checkbox" name="diego" value="0" 
onClick="cBox=cBox?0:1; alert(cBox);">
</form> 
Ejecutalo asi como esta que funciona, y despues borra el alert(cBox);

Te explico muy por arriba lo que hice asi de paso te queda algo productivo de este ejemplo pedorro que te di :)

Código PHP:
onClick="cBox=cBox?0:1;" 
Lo que hago ahi es lo siguiente, compuebo si la variable cBox es verdadera o falsa. Es lo mismo que escribir:

Código PHP:
onClick="cBox=if(cBox==true){cBox=false;}else{cBox=true;}" 
...pero como veras, mas resumido.

saludos capo
  #7 (permalink)  
Antiguo 14/04/2004, 15:27
 
Fecha de Ingreso: febrero-2001
Mensajes: 1.374
Antigüedad: 23 años, 2 meses
Puntos: 11
Que bolu, me colgue con el colorido ejemplo y me olvide el final, disculpa :)

Para ejecutar la funcion unicamente cuando esta tildado, siguiendo con el ejemplo de arriba, pones lo siguiente:

Código PHP:
onclick="cBox=cBox?0:1; cBox?alert('activado'):void(0)" 
En donde alert('activado') es la funcion que queres ejecutar.

Ahora si, saludos!
  #8 (permalink)  
Antiguo 14/04/2004, 18:05
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 2 meses
Puntos: 535
tunait, si existiera el onCheck lo usaría tal y como un onClick. Sólo que evitaría hacer IF's para conocer el estado previo del checkbox al clickearlo

Tukita, viejo, mañana pruebo tu ejemplo y te comento.

Un abrazo a ambos (y al que se quiera prender en esta orgía de abrasos )
  #9 (permalink)  
Antiguo 15/04/2004, 10:51
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 2 meses
Puntos: 535
Tuk, joya el script

Sólo un pequeño detalle. Si el estado inicial del check es checked, funciona al revés (ejecuta la función al desmarcarlo)

No es mi caso, ya que es imposible que el estado inicial de estos checkboxes en particular sea checked porque sirven para eliminar registros de una BD (además de controlar el estado de otros check) y nunca aparecen marcados por defecto... el comentario es de puro rompepelotas nada más

Saludos
  #10 (permalink)  
Antiguo 15/04/2004, 12:28
 
Fecha de Ingreso: febrero-2001
Mensajes: 1.374
Antigüedad: 23 años, 2 meses
Puntos: 11
Si es verdad, pero el secreto esta en integrar ASP o PHP al ejemplo. Sacas el valor inicial del check y lo mandas en la variable de js.

Joya, suerte!
  #11 (permalink)  
Antiguo 15/04/2004, 12:34
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Pues muy similar a la propuesta de Tukzone te hubiera yo planteado

Reconozco que no comprendo la primera sentencia

cBox=cBox?0:1

Tuk, cuando tengas tiempo y ganas, me lo explicoteas (y si no, pues ná...)


Saludillos a ambos dos
  #12 (permalink)  
Antiguo 15/04/2004, 18:03
 
Fecha de Ingreso: febrero-2001
Mensajes: 1.374
Antigüedad: 23 años, 2 meses
Puntos: 11
Es similar al if-then:

if (cBox) {
cBox=0;
}
else {
cBox=1;
}

O sea, si cBox es verdadero le asignas el valor 0 (falso), si es falso, el valor 1 (verdadero).

cBox ? cBox = 1 : cBox = 0;

Ahora, esto de arriba se pude simplificar de la siguiente manera:

cBox = cBox ? 1 : 0;

..o..

cBox = (cBox ? 1 : 0);

En verdad se recomienda usar los parentesis, para que el codigo sea mas facil de leer, en caso de que hagamos algo como esto:

cBox = (cBox ? str1 = (str1 != "" ? "hola" : "chau") : str2 = (str2 != "" ? "hola" : "chau"));

Que resulta bastante confuso, por lo que recomiendo usar el clasico if-then si es que la cosa se pone pesada.
  #13 (permalink)  
Antiguo 15/04/2004, 22:23
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 2 meses
Puntos: 535
Yo tampoco entendí de qué se trataba, pero asumo, luego de leer tu mensaje, que el signo "?" es un negador... es así?
__________________
...___...
  #14 (permalink)  
Antiguo 16/04/2004, 05:03
 
Fecha de Ingreso: febrero-2001
Mensajes: 1.374
Antigüedad: 23 años, 2 meses
Puntos: 11
si pirulo ? que haga esto : si no que haga aquello

justo en este momento estoy usando la pregunta que hiciste hace un tiempo y esto que estamos hablando ahora, en el mismo onclick:

onClick="dateFrm.month?dateFrm.month.value='':'';
dateFrm.day?dateFrm.day.value='':''; dateFrm.submit();"

(primero compruebo si el objeto existe, si existe cambio el valor, si no existe no hago nada)
  #15 (permalink)  
Antiguo 20/04/2004, 06:44
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Vale, lo que me despistaba era que de entrada interpretaba que


cBox=cBox

..era una afirmación y dependiendo de si devolvía verdadero o falso devolvía ese 0 o ese 1. Pero claro, como afirmación le faltaba un =

veo que directamente se está haciendo una asignación.

'chas gracias por la explaneichon
  #16 (permalink)  
Antiguo 20/04/2004, 09:17
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 2 meses
Puntos: 535
me había olvidado del tema :D

Por eso decía que me parecía un negador... por lo que había interpretado tunait (que fue masomenos lo mismo que yo): Si verdadero, 0. Si falso, 1
__________________
...___...
  #17 (permalink)  
Antiguo 20/04/2004, 09:30
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Pues de hecho... no sé si se le llama negador...

se puede usar para cambiar el valor de una variable dependiendo de su estado actual, o para asignar valor inicial a una variable.

por eje.. (mplo)

var pepe = "azul"

y luego decirle...

pepe == "azul" ? "verde" : "azul"

Eso cambiaría el valor a pepe cada vez que se ejecutara esa sentencia.

Lo otro es asignar un valor inicial a una variable que recién se declara

var color = pepe=="azul"?"verde":"azul";

Así se realiza una afirmación, y dependiendo de si es true o false toma uno u otro valor.

El ejemplo de Tukzone no realiza la afirmación, si no que directamente pone una variable que previamente contiene el true o false, pero no me había yo enterao...

así que pensaba que esa sentencia era del tipo


pepe == "azul" ? "verde" : "azul"

pero me extrañaba porque usaba sólo un = de ahí mi despiste sumo. Pero resultó ser una sentencia del tipo del segundo ejemplo que puse.

apuesto a que no me se entendió ni la mitad de lo que dije....
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:00.