![lloron](http://static.forosdelweb.com/fdwtheme/images/smilies/chillando.png)
![lloron](http://static.forosdelweb.com/fdwtheme/images/smilies/chillando.png)
...
![sonrisota](http://static.forosdelweb.com/fdwtheme/images/smilies/xD.png)
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
| ||||
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? |
| ||||
Re: Por qué no existe onCheck? Cita: Mensaje Original por dazuaga ![]() ![]() ![]() 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 ![]() |
| ||||
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 ![]() ![]() Cita: No queda otra que la solución que le encontraste Salú y gracias por existir ![]() |
| |||
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: 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: Código PHP: saludos capo |
| |||
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: Ahora si, saludos! |
| ||||
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 ![]() |
| ||||
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 |
| ||||
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 ![]() |
| |||
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. |
| |||
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) |
| ||||
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 ![]() |
| ||||
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
__________________ ...___... |
| ||||
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.... |