2011-11-29 42 views
5

Da quello che posso dire leggendo tutto quello che riesco a trovare qui, questo non sembra possibile, ma ho pensato di chiedere.Ottenere il valore CURRENT di una casella di controllo onclick

Quello che voglio fare è impedire che una casella di controllo faccia la sua azione di commutazione predefinita ed esegua invece una funzione. Questa funzione deve conoscere le caselle di controllo Stato CORRENTE, in opposizione allo stato in cui si troverà dopo che l'evento click l'ha attivata e che deve essere disabilitato.

Quindi dire che ho questo ingresso ad esempio

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

E la funzione setDefault è qualcosa di simile

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; 
     } 
} 

Quando che corre ottiene lo stato della casella di controllo è stato cambiato in, considerando che tali cosa Ho bisogno che lo faccia sia di impedire che lo stato cambi, di scoprire il suo stato attuale e poi decidere cosa fare.

Ho provato tutte le combinazioni di preventDefault() e restituisco false Posso pensare sia alla funzione che all'evento onclick e ho provato a utilizzare l'evento onchange ecc., Ma niente sembra permettermi di chiamare una funzione che si attiva quando si fa clic sulla casella di controllo che consente alla funzione di ottenere il valore corrente della casella di controllo prima che venga modificata dall'evento click.

Probabilmente ho solo bisogno di ripensare questo, ma se c'è qualcosa ovvio ho perso sarei molto grato

risposta

2

Dal momento che il cambiamento è avvenuto già, lo stato della casella di controllo è l'opposto di ciò che è ora . Questo risolve il tuo primo problema.

Per ripristinare lo stato, è sufficiente impostare il valore della casella di controllo checked su quello che non è ora, che è quello che era prima.

(il mio, questo sembra qualcosa che il Cappellaio Matto direbbe!)

+0

Giusto, ok! Certo è un matto Hatterish! quindi l'ho aggiunto all'inizio della mia funzione: jQuery (el) .is (': checked')? jQuery (el) .prop ('checked', false): jQuery (el) .prop ('checked', true); - che sembra fare il trucco;) –

+0

Felice di aiutare. Inoltre, solo FYI, se trovi una risposta o una domanda utile, o pensi che una risposta aggiunga informazioni utili, puoi anche votare per mostrare il tuo supporto. – cdeszaq

+0

Fatto, mi dispiace, sono un po 'nuovo round qui: ~ –

Problemi correlati