javascript中如何判断输入的日期是否正确
因为没学过正则表达式所以希望高手不要用正则表达式我自己写了一下可以实在是写不下去了functionwriteclick(){username=document.form1...
因为没学过正则表达式 所以希望高手不要用正则表达式
我自己写了一下 可以实在是写不下去了
function writeclick()
{
username=document.form1.username.value;
if(username=="")
{
document.form1.username.focus();
alert("用户名不能为空");
return false;
}
birth=document.form1.birth.value;
if(birth!="")
{
count=birth.split("-");
if(count.length==3)
{
if(count[1]>12)
{
document.form1.birth.focus();
alert("请正确填写日期(例如:2002-5-22)!");
return false;
}
if(count[1]==2)
{
if((count[0]%4==0&&count[0]%100!=0)||count[0]%400==0)
{
if(count[2]>29)
{
document.form1.birth.focus();
alert("月份的天数错误");
return false;
}
}
}
if(count[1]==2)
if(!((count[0]%4==0&&count[0]%100!=0)||count[0]%400==0))
{
if(count[2]>28)
{
document.form1.birth.focus();
alert("月份的天数错误");
return false;
}
}
dt=new Date(birth)
if(!isNaN(dt))
return true;
}
else
{
document.form1.birth.focus();
alert("请正确填写日期(例如:2002-5-22)!");
return false;
}
}
}
我还不能实现当月份不是2月的判断
希望高手能帮帮忙啊 谢谢 展开
我自己写了一下 可以实在是写不下去了
function writeclick()
{
username=document.form1.username.value;
if(username=="")
{
document.form1.username.focus();
alert("用户名不能为空");
return false;
}
birth=document.form1.birth.value;
if(birth!="")
{
count=birth.split("-");
if(count.length==3)
{
if(count[1]>12)
{
document.form1.birth.focus();
alert("请正确填写日期(例如:2002-5-22)!");
return false;
}
if(count[1]==2)
{
if((count[0]%4==0&&count[0]%100!=0)||count[0]%400==0)
{
if(count[2]>29)
{
document.form1.birth.focus();
alert("月份的天数错误");
return false;
}
}
}
if(count[1]==2)
if(!((count[0]%4==0&&count[0]%100!=0)||count[0]%400==0))
{
if(count[2]>28)
{
document.form1.birth.focus();
alert("月份的天数错误");
return false;
}
}
dt=new Date(birth)
if(!isNaN(dt))
return true;
}
else
{
document.form1.birth.focus();
alert("请正确填写日期(例如:2002-5-22)!");
return false;
}
}
}
我还不能实现当月份不是2月的判断
希望高手能帮帮忙啊 谢谢 展开
2个回答
展开全部
我建议你还是不要去判断吧,很麻烦的,自动给他转换吧,把平年的2月29直接转换为3月1日,把1月32转换为2月1日,例子代码如下:
<input type=text onChange="chk_date(this);">
<script type=text/javascript>
function chk_date(f)
{
s=f.value.split('-');
y=parseInt(s[0]);
m=parseInt(s[1]);
d=parseInt(s[2]);
if (isNaN(y) || isNaN(m) || isNaN(d)){alert("请正确填写日期(例如:2002-5-22)!");return false;}
dd=new Date(y,m-1,d);
y=dd.getYear();
m=dd.getMonth()+1;
d=dd.getDate();
f.value=y+'-'+m+'-'+d;
alert(dd);
}
</script>
以上代码调试通过,如果你愿意,可以解决你的问题。
<input type=text onChange="chk_date(this);">
<script type=text/javascript>
function chk_date(f)
{
s=f.value.split('-');
y=parseInt(s[0]);
m=parseInt(s[1]);
d=parseInt(s[2]);
if (isNaN(y) || isNaN(m) || isNaN(d)){alert("请正确填写日期(例如:2002-5-22)!");return false;}
dd=new Date(y,m-1,d);
y=dd.getYear();
m=dd.getMonth()+1;
d=dd.getDate();
f.value=y+'-'+m+'-'+d;
alert(dd);
}
</script>
以上代码调试通过,如果你愿意,可以解决你的问题。
展开全部
可以用这个正则表达式判断:
function verify_date(date_str)
{
var myReg=new RegExp("^(?:(?:([0-9]{4}/(?:(?:0?[1,3-9]|1[0-2])/(?:29|30)|((?:0?[13578]|1[02])/31)))|([0-9]{4}/(?:0?[1-9]|1[0-2])/(?:0?[1-9]|1\\d|2[0-8]))|(((?:(\\d\\d(?:0[48]|[2468][048]|[13579][26]))|(?:0[48]00|[2468][048]00|[13579][26]00))/0?2/29)))$");
if(myReg.test(date_str))
alert("对不起,请您按以下格式输入日期:\n2005-5-5或2005/1/1");
return myReg.test(date_str);
}
date_str是用户输入的日期
function verify_date(date_str)
{
var myReg=new RegExp("^(?:(?:([0-9]{4}/(?:(?:0?[1,3-9]|1[0-2])/(?:29|30)|((?:0?[13578]|1[02])/31)))|([0-9]{4}/(?:0?[1-9]|1[0-2])/(?:0?[1-9]|1\\d|2[0-8]))|(((?:(\\d\\d(?:0[48]|[2468][048]|[13579][26]))|(?:0[48]00|[2468][048]00|[13579][26]00))/0?2/29)))$");
if(myReg.test(date_str))
alert("对不起,请您按以下格式输入日期:\n2005-5-5或2005/1/1");
return myReg.test(date_str);
}
date_str是用户输入的日期
参考资料: http://zhidao.baidu.com/question/86258167.html?si=1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询