OK, and I just noticed an error in the calendarDateInput.js script. Find this:
Code:
onKeyPress="return YearDigitsOnly(window.event)"
Change it to:
Code:
onKeyPress="return YearDigitsOnly(event)"
The original only works in IE. With the change it works in all browsers. What it does is prohibit anything other than a number being entered in the Year field. At least via the keyboard. I think you could still paste something else in there.
Anyways, back to your question. For the robust version:
Code:
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript" src="calendarDateInput.js">
/***********************************************
* Jason's Date Input Calendar- By Jason Moon http://calendar.moonscript.com/dateinput.cfm
* Script featured on and available at http://www.dynamicdrive.com
* Keep this notice intact for use.
***********************************************/
</script>
</head>
<body>
<form>
<script>DateInput('orderdate', true, 'DD-MON-YYYY')</script>
<input type="button" onclick="alert(this.form.orderdate.value)" value="Show date value passed">
</form>
<form>
<script>DateInput('orderdate2', true, 'DD-MON-YYYY')</script>
<input type="button" onclick="alert(this.form.orderdate2.value)" value="Show date value passed">
</form>
<script type="text/javascript">
function emptyfields (dateName){
var elementsdate = document.getElementsByName(dateName)[0].form.elements, i = elementsdate.length,
dateObj = window[dateName + '_Object'], el, day, month, year, pd;
dateObj.setHidden('');
while(--i > -1){
el = elementsdate[i];
if(el.className === 'calendarDateInput' && el.id.indexOf(dateName + '_') === 0){
if(el.id === dateObj.yearFieldID){
el.value = '';
el.disabled = true;
year = el;
el.title = 'Enter Year - First Pick a Month';
}
else if(el.id === dateObj.dayListID){
el.selectedIndex = -1;
el.disabled = true;
day = el;
el.title = 'Select Day - First Pick a Month';
}
else if(el.id === dateObj.monthListID){
el.selectedIndex = -1;
el.title = 'Month';
month = el;
(function(el){
el.onchange = function(){
day.disabled = year.disabled = false;
day.selectedIndex = 0;
day.title = 'Day';
year.value = new Date().getFullYear();
year.title = 'Year';
dateObj.pickDay = function(dayNum){
pd.apply(dateObj, [dayNum]);
};
dateObj.changeMonth(el);
el.onchange = function(){dateObj.changeMonth(el);};
};
})(el);
}
}
}
pd = dateObj.pickDay;
dateObj.pickDay = function(dayNum){
day.disabled = year.disabled = false;
day.selectedIndex = 0;
day.title = 'Day';
year.value = new Date().getFullYear();
year.title = 'Year';
month.onchange = function(){dateObj.changeMonth(month);};
pd.apply(dateObj, [dayNum]);
dateObj.pickDay = function(dayNum){
pd.apply(dateObj, [dayNum]);
};
};
}
emptyfields('orderdate');
emptyfields('orderdate2');
</script>
</body>
</html>
The simplified would be similar:
Code:
function emptyfields(dateName){
var elementsdate = document.getElementsByName(dateName)[0].form.elements, i = elementsdate.length, el;
while(--i > -1){
el = elementsdate[i];
if(el.id.indexOf(dateName + '_') === 0 || el.name === dateName){
el.value = '';
el.selectedIndex = -1;
}
}
}
emptyfields('orderdate');
emptyfields('orderdate2');
Bookmarks