在页面中显示输入框,在输入焦点移开时候检测日期onChange="return checkDateYMD(this)"
checkDateYMD函数实现如下
function checkDateYMD(obj)
{
var dateStr = obj.value;
if (dateStr!='')
{
if(!isValidDate(obj)) {
obj.focus();
return false;
}
}
}
function isValidDate(obj)
{
var dateStr = obj.value;
var datePat = /^(\d{4})(\/|-)(\d{1,2})\2(\d{1,2})$/;
var datePatd = /^(\d{8})$/;
var year;
var month;
var day;
var matchArray = dateStr.match(datePat); // is the format ok?
var matchAllDArray = dateStr.match(datePatd);
if (matchArray == null) {
if (matchAllDArray==null)
{
alert("日期格式不正确,请重新输入!");
return false;
}
else
{
year = dateStr.substring(0,4);
month = dateStr.substring(4,6);
day = dateStr.substring(6,8);
}
}
else
{
year = matchArray[1]; // parse date into variables
month = matchArray[3];
day = matchArray[4];
}
if (month < 1 || month > 12) {
alert("月份应为01 - 12之间的数字,请重新输入!");
return false;
}
if (day < 1 || day > 31) {
alert("日期应为01 - 31之间的数字,请重新输入!");
return false;
}
if ((month==4 || month==6 || month==9 || month==11) && day==31) {
alert(month+"月没有31天,请重新输入!")
return false;
}
if (month == 2) {
var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
if (day>29 || (day==29 && !isleap)) {
alert(year+"年2月没有 " + day + "日,请重新输入!");
return false;
}
}
obj.value = year+"-"+month+"-"+day;
return true;// date is valid
}