How do I determine if a checkbox is checked?

JavascriptHtmlCheckbox

Javascript Problem Overview


For some reason, my form does not want to get the value of a checkbox... I am not sure if it is my coding or not, but when I try and alert() the value, I get undefined as a result. What do I have wrong?

<head>
  <script>
    var lfckv = document.getElementById("lifecheck").checked
    function exefunction(){
	  alert(lfckv);
    }
  </script>
</head>
<body>
  <label><input id="lifecheck" type="checkbox" >Lives</label>
</body>

EDIT

I tried changing it to this

function exefunction() {
    alert(document.getElementById("lifecheck").checked);
}

But now it doesn't even want to execute. What's going wrong?

Javascript Solutions


Solution 1 - Javascript

Place the var lfckv inside the function. When that line is executed, the body isn't parsed yet and the element "lifecheck" doesn't exist. This works perfectly fine:

function exefunction() {
  var lfckv = document.getElementById("lifecheck").checked;
  alert(lfckv);
}

<label><input id="lifecheck" type="checkbox" >Lives</label>
<button onclick="exefunction()">Check value</button>

Solution 2 - Javascript

You are trying to read the value of your checkbox before it is loaded. The script runs before the checkbox exists. You need to call your script when the page loads:

<body onload="dosomething()">

Example:

http://jsfiddle.net/jtbowden/6dx6A/

You are also missing a semi-colon after your first assignment.

Solution 3 - Javascript

You can use this code, it can return true or false:

$(document).ready(function(){
  
  //add selector of your checkbox

  var status=$('#IdSelector')[0].checked;
  
  console.log(status);

});

Solution 4 - Javascript

The line where you define lfckv is run whenever the browser finds it. When you put it into the head of your document, the browser tries to find lifecheck id before the lifecheck element is created. You must add your script below the lifecheck input in order for your code to work.

Solution 5 - Javascript

try learning jQuery it's a great place to start with javascript and it really simplifies your code and help separate your js from your html. include the js file from google's CDN (https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js)

then in your script tag (still in the <head>) use:

$(function() {//code inside this function will run when the document is ready
    alert($('#lifecheck').is(':checked'));
    
    $('#lifecheck').change(function() {//do something when the user clicks the box
        alert(this.checked);
    });
});

Solution 6 - Javascript

<!DOCTYPE html>
<html>
<body>
	<input type="checkbox" id="isSelected"/>
	<div id="myDiv" style="display:none">Is Checked</div>
</body>
	
	<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
	<script>
		$('#isSelected').click(function() {
			$("#myDiv").toggle(this.checked);
		});
	</script>
</html>

Solution 7 - Javascript

Following will return true when checkbox is checked and false when not.

$(this).is(":checked")

Replace $(this) with the variable you want to check.

And used in a condition:

if ($(this).is(":checked")) {
  // do something
}

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionSeanView Question on Stackoverflow
Solution 1 - JavascriptElian EbbingView Answer on Stackoverflow
Solution 2 - JavascriptJeff BView Answer on Stackoverflow
Solution 3 - JavascriptrapaelecView Answer on Stackoverflow
Solution 4 - JavascriptJoelView Answer on Stackoverflow
Solution 5 - JavascriptWalfView Answer on Stackoverflow
Solution 6 - JavascriptGautam ViradiyaView Answer on Stackoverflow
Solution 7 - JavascriptFlavio CaduffView Answer on Stackoverflow