Be Good & Do Good!

Make Salesforce calendar year drop-down to show earlier years

Problem:
The birthdate field on the Contact object doesn’t show previous year and neither does it allow to switch back and forth the Years part easily.

Solution:
Below example will show the last 100 years.

  1. Go to Setup -> App Setup -> Customize -> User Interface. Here make sure the ‘Show Custom Sidebar Components on All Pages’ is checked.
  2. Go to Setup -> App Setup -> Home Page Layouts. Make sure all your Home Page Layouts have the Messages & Alerts component checked.
  3. Go to Setup -> App Setup -> Home Page Components. Here, click edit for Messages & Alerts. In the textarea, copy and paste the javascript code below and save (it can just go below your normal Messages & Alerts, won’t show up on the actual page).
<script src="/js/dojo/0.4.1/dojo.js"></script>
<script src="/soap/ajax/11.1/connection.js" type="text/javascript"></script>
<script type="text/javascript">
dojo.require("dojo.collections.Store");
dojo.require("dojo.charting.Chart");
dojo.require('dojo.json');
var arYears = getYears();
function swapYears(){
	if(document.getElementById('calYearPicker') != null) {
		var select = document.getElementById('calYearPicker');
		var curValue = select.value;
		var parentx = select.parentNode;
		parentx.removeChild(select);
		select = document.createElement('select');
		select.size = 1;
		select.id = 'calYearPicker';
		select.name = 'calYearPicker';
		parentx.appendChild(select);
	}
	if(select != null) {
	for(x=0;x<100;x++) {
		select.options[x] = new Option(arYears[x], arYears[x], false, false);
	}
	}
}
function getYears() {
	sforce.sessionId = getCookie('sid');
	sforce.connection.sessionId=sforce.sessionId;
	var out = [];
	var currentTime = new Date()
	var year = currentTime.getFullYear()
	try {
		for(x=0;x<100;x++) {
			out[x] = x+year-99;
		}	

	} catch(error) {
		alert(error);
	}
	return out;
}
dojo.addOnLoad(swapYears);
</script>

Credits: Salesforce Community (http://boards.developerforce.com/t5/General-Development/Date-of-Birth-field-Calendar-years-don-t-go-back-before-this/td-p/120133)

13 Comments

  1. Rajit Nair

    Thanks so much! works like a charm!

  2. Rajit Nair

    To get this working without any error, please remove the comments like:

    // generate dates for the last 100 years

    // Contact Birth day

    etc..

  3. Chirag Mehta

    Thanks Rajit for the correction. Updated post accordingly.

  4. Mallesh

    its not working Mehta, could you please correct me

  5. Chirag Mehta

    What error are you getting? Can you please check error console and see if there are any js errors.

  6. Anshul Jain

    It did not work for me. I performed all the steps as given above.

    Please help.

  7. Chirag Mehta

    Can you please check javascript Console and see if there are any errors?

  8. shruthi

    It worked perfectly

  9. Chirag Mehta

    great, enjoy 🙂

  10. Michael Smith (@Force2be)

    Very nice!!

  11. Chirag Mehta

    Thank you Michael!

  12. Firoz Patel

    I have two date picker i need one standard and one customized ,
    1) 1st Datepicker range should be from 1980 to current and
    2)second Datepicker range should be from 2013 to current date
    how do I do?

  13. Raju Kiran

    Hi,
    I followed same steps as you mentioned in the above but i’m getting error as follow:
    Error: This component contains unsupported or malformed HTML elements. Remove any script-related tags, fix any malformed HTML, then try again.

Leave a Reply

Your email address will not be published. Required fields are marked *