tags:

views:

85

answers:

5

Hi all,

Is there any way in JQUERY to trigger a function when a checkbox has been ticked or unticked?

NOTE: I dont want the "click" function because I use another buttons to tick or untick 20 checkboxes at the same time for example. (and in that case I have only 1 click, but really I need to do the "click" function 20 times, one per each 20 checkbox ticked) I don't want make loops because I'm using pagination and another stuff, I'm looking for something more simple as a "onTick" function.

The event is onTick or onUnTick but not "onClick"

Is there any solution?

Many thanks!

Solved and 100% working:

$("input[type='checkbox']").change(function(){});

+2  A: 

I'm thinking maybe onChange would work.

Kyle
As simple as effective, u are grand!:100% working:$("input[type='checkbox']").change(function(){});
Dani Dublin
A: 

Try the onchange event. It's fired when the state of the checkbox changes (even programaticaly).

dark_charlie
+7  A: 
$('input[type=checkbox]').bind('change', function(e){
  var jT = $(this);  //jT is a jQuery Object for the current input
    //I.E. 20 'ticks' = 20 calls no looping needed.
  if (jT.is(':checked')){
    //was checked
  } else {
    //was unchecked
  }
});
Rixius
A: 

jQuery has a .change() method that basically handles the onChange event. You can probably use that. http://api.jquery.com/change/

A: 

This is what I did to fade out an item when I clicked my checkbox.

$(".done").live("click", function(){

if ($(this).is(':checked')) {

$(this).parent().fadeTo('slow', 0.5); }else{

$(this).parent().fadeTo('slow', 1); } });

.done is my checkbox class, to do this for the multiple checkboxes you would set it to your select all. Ex.

$(".selectall").live("click", function(){

if ($(this).is(':checked')) {

$(this).parent().fadeTo('slow', 0.5); }else{

$(this).parent().fadeTo('slow', 1); } });

So essentially .is(':checked')) will do what you want.

Edit: Sorry about the code fail - Something went wrong.

MoDFoX