用javascript检查yyyy-mm-dd格式的正确源码 *******************************
<SCRIPT LANGUAGE=javascript>
<!-- function form4_onsubmit()
{ ymd1=form4.date1.value.split("-");
month1=ymd1[1]-1
var Date1 = new Date(ymd1[0],month1,ymd1[2]);
if (Date1.getMonth()+1!=ymd1[1]||Date1.getDate()!=ymd1[2]||Date1.getFullYear()!=ymd1[0]||ymd1[0].length!=4)
{
alert("非法日期,请依【YYYY-MM-DD】格式输入");
form4.date1.focus();
return false;
}
alert("输入日期:" + form4.date1.value);
return true;
}
//-->
</SCRIPT>
<% nowdate=year(date)&"-"&month(date)&"-"&day(date)%>
<form name=form4 method="POST" action="chkfind.asp" onsubmit="return form4_onsubmit()">
<input type="text" name="date1" size="12" value=<%=nowdate%> >
</form>
<SCRIPT LANGUAGE=javascript>
<!-- function form4_onsubmit()
{ ymd1=form4.date1.value.split("-");
month1=ymd1[1]-1
var Date1 = new Date(ymd1[0],month1,ymd1[2]);
if (Date1.getMonth()+1!=ymd1[1]||Date1.getDate()!=ymd1[2]||Date1.getFullYear()!=ymd1[0]||ymd1[0].length!=4)
{
alert("非法日期,请依【YYYY-MM-DD】格式输入");
form4.date1.focus();
return false;
}
alert("输入日期:" + form4.date1.value);
return true;
}
//-->
</SCRIPT>
<% nowdate=year(date)&"-"&month(date)&"-"&day(date)%>
<form name=form4 method="POST" action="chkfind.asp" onsubmit="return form4_onsubmit()">
<input type="text" name="date1" size="12" value=<%=nowdate%> >
</form>
function checkDate(obj)//判断日期格式是不是符合
{
var strDate=obj.value;
re=/\d{4}\-\d{2}-\d{2}/g
if(re.test(strDate))//判断日期格式符合YYYY-MM-DD标准
{
var DateArray=strDate.split("-");
var dateElement=new Date(DateArray[0],parseInt(DateArray[1])-1,DateArray[2]);
if(!((dateElement.getFullYear()==parseInt(DateArray[0]))&&((dateElement.getMonth()+1)==parseInt(DateArray[1]))&&(dateElement.getDate()==parseInt(DateArray[2]))))//判断日期逻辑
{
alert("不符合时间逻辑")
obj.value='';
}
else
{
alert("正确")
}
}
else
{
alert("格式输入错误")
obj.value='';
}
}
</script>
<input name=time1 onblur=checkDate(this)>
*返回值:
*如果为空,定义校验通过, 返回true
*如果字串为日期型,校验通过, 返回true
*如果日期不合法, 返回false 参考提示信息:输入域的时间不合法!(yyyy-MM-dd)
*/
function checkIsValidDate(str)
{
//如果为空,则通过校验
if(str == "")
return true;
var pattern = /^((\\d{4})|(\\d{2}))-(\\d{1,2})-(\\d{1,2})$/g;
if(!pattern.test(str))
return false;
var arrDate = str.split("-");
if(parseInt(arrDate[0],10) < 100)
arrDate[0] = 2000 + parseInt(arrDate[0],10) + "";
var date = new Date(arrDate[0],(parseInt(arrDate[1],10) -1)+"",arrDate[2]);
if(date.getYear() == arrDate[0]
&& date.getMonth() == (parseInt(arrDate[1],10) -1)+""
&& date.getDate() == arrDate[2])
return true;
else
return false;
}//
<!--
function IsDate(op, formatString){
formatString = formatString || "ymd";
var m, year, month, day;
switch(formatString){
case "ymd" :
m = op.match(new RegExp("^((\\d{4})|(\\d{2}))([-./])(\\d{1,2})\\4(\\d{1,2})$"));
if(m == null ) return false;
day = m[6];
month = m[5]*1;
year = (m[2].length == 4) ? m[2] : GetFullYear(parseInt(m[3], 10));
break;
case "dmy" :
m = op.match(new RegExp("^(\\d{1,2})([-./])(\\d{1,2})\\2((\\d{4})|(\\d{2}))$"));
if(m == null ) return false;
day = m[1];
month = m[3]*1;
year = (m[5].length == 4) ? m[5] : GetFullYear(parseInt(m[6], 10));
break;
default :
break;
}
if(!parseInt(month)) return false;
month = month==0 ?12:month;
var date = new Date(year, month-1, day);
return (typeof(date) == "object" && year == date.getFullYear() && month == (date.getMonth()+1) && day == date.getDate());
function GetFullYear(y){return ((y<30 ? "20" : "19") + y)|0;}
}alert(IsDate("2006-03-0"))
//-->
</SCRIPT>
如果输入格式不为yyyy-mm-dd的格式,就跳出提示框提示格式错误即可
比如后面有空格、日期位数不对等等
这样如何处理呢
<input id="date" /><input type="button" value="click" onclick="checkDate()" />
<script>
function checkDate()
{
var obj=document.getElementById("date");
var temp=obj.value;
var pattern=/^(\d{4})-(\d{2})-(\d{2})$/i
var matches=temp.match(pattern);
if(matches) //匹配 DDDD-DD-DD 的形式
{
var tempDate=new Date(matches[1],matches[2]-1,matches[3]);
if(tempDate.getYear()!=matches[1]||tempDate.getMonth()!=(matches[2]-1)||tempDate.getDate()!=matches[3]) //检查是否正确日期 比如9923-15-48 等形式
{
alert("日期不正确!");
return false;
}
}
else
{
alert("格式错误");
return false;
}
}
</script>
</body>
这个方法能不能对输入值为空进行判断呢
比如输入的是:2005-3 -1
3后有个空格
有两个文本框输入时间
对着两个都要判断
var obj=document.getElementById("date");
这句是接受一个时间date
另外一个如何弄呢
单独再写一个方法吗
呵呵
3ks