onChange event using javascript

Hello,  I'm trying to create a simple onChange event using javascript which takes a custom checkbox (example a sales step in an opportunity) and when checked I want it to populate  a completed date field automatically.  We currently have 4 steps in our sales process so we would like to track each step as people mature an opportunity.  Having troubles accomplishing this, have good programming knowledge but not much javascript.  Thanks.
LVL 1
ohmErnieAsked:
Who is Participating?
 
mriz81Connect With a Mentor Commented:
I did not get your requirement clearly. But I think you want to perform something ( populate date ) when a checkbox is checked on unchecked .. am I right?
If yes .. then you need to use onClick event instead of onChange event.
For Example
<input type="checkbox" name="chk1" value="1" onclick="alert('changed');" />

Open in new window

0
 
msfletchConnect With a Mentor Commented:
mriz 81 is correct, you do need onClick instead of onChange.

I beleive the attached code does what you want. I tried to annotate it for clarity, so you should be able to add onto it and modify it according to your needs.

Basically, it sets or clears the date depending on whether or not the checkbox has been checked or unchecked. It also supports multiple checkboxes and date fields. Just change the date fields from "text" to "hidden" if you don't want them displayed.

Good luck.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 
<html>
<head>
	<title>Untitled</title>
 
	<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
	<!--
	function setDate(whichCheckbox,whichDateField) {
	
                  // check if checkbox checked or unchecked
		if (document.getElementById(whichCheckbox).checked == true) {
	
			// create new date object
			var now = new Date();
		
			// parse elements of date object for display ... use the ones you want
			// var hour = now.getHours();
			// var minute = now.getMinutes();
			// var second = now.getSeconds();
			var monthnumber = now.getMonth();
			var monthday = now.getDate();
			var year = now.getYear();
		
			// combine elemets for desired format
			var entryDate = monthnumber + '/' + monthday + '/' + year;
		
			// enter date in field
			document.getElementById(whichDateField).value = entryDate;
		
		} else {
		
			// remove date from text field
			document.getElementById(whichDateField).value = '';
		}
					
	}
	//-->
	</SCRIPT>
 
</head>
 
<body>
 
<form name="form" method="post" action="somepage.html">
 
	<input type="checkbox" name="chk1" id="chk1" value="1" onclick="setDate('chk1','stepOneDate')" />
	<input type="text" name="stepOneDate" id="stepOneDate" value="" />
	<br />
	<input type="checkbox" name="chk2" id="chk2" value="1" onclick="setDate('chk2','stepTwoDate')" />
	<input type="text" name="stepTwoDate" id="stepTwoDate" value="" />
	
</form>
 
</body>
</html>

Open in new window

0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.