Ti ho adattato un mio script postato gia' piu volte:
codice:
<script>
function isDate(str) { 
	spz = str.split("/"); 
	dat = new Date(spz[2], spz[1]-1, spz[0]); 
	if	( 
		dat.getFullYear() == parseFloat(spz[2]) &&
		dat.getMonth() == (parseFloat(spz[1])-1) &&
		dat.getDate() == parseFloat(spz[0]) 
		) {
			return dat;
	}
	return false;
} 

function testD(obj) {
	obj.style.background='white'
	RE = /[^\d^/^\-^\.]/gi
	obj.value=obj.value.replace(RE,"");
	RE = /[\-\.]/gi
	obj.value=obj.value.replace(RE,"/");
	d = isDate(obj.value);
	if (!d && obj.value != "") {
		alert("Formato Data Errata")
		obj.style.background='yellow'
		obj.focus()
		return false
	}
	if (d > (new Date())) {
		alert("Data Troppo Grande")
		obj.style.background='red'
		obj.focus()
	}
}
</script>
<input type=text name=giorno value='' onblur='testD(this)' size=12>
ciao