0

What I'm trying is quite simple, but for some reason I can't get it working:

I need a way to do different actions based on checkbox state. If it's checked, do something. If not, do something else. For some reason I can only have "checked" state:

$('#checkbox1').on('change', function() {
    if ($('#checkbox1:checked')) {
        console.log('do something')
    } else {
        console.log('do something else')
    }
});

Codepen: http://codepen.io/anon/pen/EZROGa?editors=1010

what am I missing?

azeós
  • 4,853
  • 4
  • 21
  • 40
Rico Letterman
  • 651
  • 1
  • 6
  • 14

9 Answers9

2

Try this:

$('#checkbox1').on('change', function() {
  if($(this).is(':checked'))  // here $(this) refers to $('#checkbox1') 
  {
     // do some thing
  }
  else
  {
     // do some thing
  }
});
Mayank Pandeyz
  • 25,704
  • 4
  • 40
  • 59
1

$('#checkbox1').on('change', function() {
  if ($('#checkbox1').is(":checked")) {
    console.log('do something')
  } else {
    console.log('do something else')
  }
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" id="checkbox1" />

Use like this

guradio
  • 15,524
  • 4
  • 36
  • 57
1
$('#checkbox1').on('change', function() {
  if ($(this).is(":checked")) {
    console.log('do something')
  } else {
    console.log('do something else')
  }
})
Akshay
  • 815
  • 7
  • 16
1

Correct syntax is :

`$('#checkbox1').on('change', function() {
  if ($('#checkbox1').prop('checked')) {
    console.log('do something')
  } else {
    console.log('do something else')
  }
})`
1

You can use the .prop() jquery function.

$('#checkbox1').on('change', function() {
  if ($('#checkbox1').prop( "checked" )) {
    console.log('do something')
  } else {
    console.log('do something else')
  }
})

http://api.jquery.com/prop/

Web Dev Guy
  • 1,693
  • 3
  • 18
  • 42
1

$('#checkbox1').on('change', function() {
  if ($(this).is(":checked")) {
    console.log('do something')
  } else {
    console.log('do something else')
  }
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="checkbox1" name="checkbox1" type="checkbox"><label for="checkbox1">some checkbox</label>

Try above one. 'this' keyword points to the current html element.

Abi
  • 724
  • 6
  • 22
0

Here you go:

$('#checkbox1').on('change', function() {
  if ($('#checkbox1:checked').length) {
    console.log('do something')
  } else {
    console.log('do something else')
  }
})
kawadhiya21
  • 2,458
  • 21
  • 34
0

I like taking this clean approach

var check = $("#checkbox1:checked").length;

if(check) //Do Something.
Darkrum
  • 1,325
  • 1
  • 10
  • 27
0

try this :

$('#checkbox1').on('click', function() {
 if ($(this).prop("checked") == true) {
  console.log('do something')
 } else {
  console.log('do something else')
 }
})
aks7
  • 431
  • 3
  • 12