2011-11-29 11 views
5

Por lo que puedo ver leyendo todo lo que puedo encontrar aquí, esto no parece posible, pero pensé que podría preguntar.Obteniendo el valor CURRENT de una casilla de verificación al hacer clic en

Lo que quiero hacer es evitar que una casilla de verificación realice su acción de alternar predeterminada y ejecutar una función en su lugar. Esta función necesita saber las casillas de estado CURRENT, a diferencia del estado en el que estará después de que el evento click lo haya conmutado, y que se debe evitar el alternar.

Así que decir que tengo esta entrada, por ejemplo,

<input type="checkbox" onclick="setDefault(this);return false;" /> 

Y la función setdefault es algo como esto

function setDefault(el) { 
    if(jQuery(el).is(':checked')) 
     { 
     alert('Turning current default off- setting default to Home settings'); 
     jQuery(el).prop('checked',false); 
     return; 
     } 
    else 
     { 
     alert('setting a new default'); 
     jQuery(el).prop('checked',false); 
     return; 
     } 
} 

Al que lo dirige obtiene el estado de la casilla de verificación se ha cambiado a, Considerando que nos lo Lo que necesito hacer es evitar que el estado cambie, conocer su estado actual y luego decidir qué hacer.

He intentado todas las combinaciones de preventDefault() y devto falso. Puedo pensar tanto en la función como en el evento onclick y he intentado usar el evento onchange, etc., pero nada parece permitirme llamar a una función que se dispara cuando se hace clic en la casilla de verificación que permite a la función obtener el valor actual de la casilla de verificación antes de que se modifique mediante el evento de clic.

Probablemente sólo hay que replantearse esto, pero si hay algo obvio que me he perdido yo estaría muy agradecido

Respuesta

2

Desde el cambio ocurrido ya, el estado de la casilla de verificación es lo contrario de lo que es ahora . Eso resuelve tu primer problema.

Para restablecer el estado, simplemente configure el valor checked de la casilla de verificación a lo que no es ahora, que es lo que era antes.

(¡esto suena como algo que diría el Sombrerero Loco!)

+0

¡Bien, bien! ¡Claro que es Mad Hatterish! entonces lo he agregado al comienzo de mi función - jQuery (el) .is (': checked')? jQuery (el) .prop ('checked', false): jQuery (el) .prop ('checked', true); - eso parece hacer el truco;) –

+0

Me alegra ayudar. Además, solo para su información, si encuentra que una respuesta o pregunta es útil, o si cree que una respuesta agrega información útil, puede votar también para mostrar su apoyo. – cdeszaq

+0

Listo, lo siento, soy un poco nuevo ronda aquí: ~ –

Cuestiones relacionadas