下面是我的JSP页面中的部分代码,大概意思是因为我对用户提交的时间格式有限制,所以在submit提交时要先验证时间格式的合法性,如果不合法,则弹出对话框提示。
但我碰到的问题是:时间格式错误时,提示对话框也弹出来了,但是点击对话框上面的“确定”后,还是会触发提交动作。而我想要的是弹出错误提示后,点击“确定”,还是停留在原来页面,让用户可以修改时间格式。
//验证是否为日期
function validator(){
if(isDate(document.all.demo1.value.trim())==false){
document.all.demo1.select();
return false;
}
/**
判断输入框中输入的日期格式是否为 yyyy-mm-dd 或yyyy-m-d
*/
function isDate(dateString){
if(dateString.trim()=="")return true;
//年月日正则表达式
var r=dateString.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);
if(r==null){
alert("请输入格式正确的日期\n\r日期格式:yyyy-mm-dd\n\r例 如:2008-08-08\n\r");
return false;
}
var d=new Date(r[1],r[3]-1,r[4]);
var num = (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]);
if(num==0){
alert("请输入格式正确的日期\n\r日期格式:yyyy-mm-dd\n\r例 如:2008-08-08\n\r");
return false;
}
return (num!=0);
}
</script>
</head>
<body>
<s:form action="regMember.action">
<table align="center">
<tr><td><s:textfield label="成员账号" name="tempUserInfo.account" /></td></tr>
<tr><td><s:textfield label="密码" name="tempUserInfo.password" /></td></tr>
<tr><td><s:radio name="tempUserInfo.sex" list="#{'0':'男','1':'女'}" label="性别"></s:radio></td></tr>
<tr><td><s:textfield label="出生年月" id="demo1" name="tempUserInfo.birthday" /></td></tr>
<tr><td>
<tr><td><s:submit value="提交" onclick="validator()" /></td></tr>
</table>
</s:form>
</body>
------解决方案--------------------
2种方法。
1.加一个隐藏的iframe,将提交的target指向这个frame,frame里弹JS提示。
2.Ajax.
------解决方案--------------------
//验证是否为日期
function validator(){
if(isDate(document.all.demo1.value.trim())==false){
document.all.demo1.select();
return false;
}
return true;
}
/**
判断输入框中输入的日期格式是否为 yyyy-mm-dd 或yyyy-m-d
*/
function isDate(dateString){
if(dateString.trim()=="")return true;
//年月日正则表达式
var r=dateString.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);
if(r==null){
alert("请输入格式正确的日期\n\r日期格式:yyyy-mm-dd\n\r例 如:2008-08-08\n\r");
return false;
}
var d=new Date(r[1],r[3]-1,r[4]);
var num = (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]);
if(num==0){
alert("请输入格式正确的日期\n\r日期格式:yyyy-mm-dd\n\r例 如:2008-08-08\n\r");
return false;
}
return (num!=0);
}
</script>
</head>
<body>
<s:form action="regMember.action" onsubmit="return validator()">
<table align="center">
<tr><td><s:textfield label="成员账号" name="tempUserInfo.account" /></td></tr>
<tr><td><s:textfield label="密码" name="tempUserInfo.password" /></td></tr>