读书人

JS弹出提示框点击确定后能否留在原页

发布时间: 2012-01-19 20:57:58 作者: rapoo

JS弹出提示框,点击确定后能否留在原页面,不触发事件
下面是我的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>


<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="提交" /></td></tr>
</table>
</s:form>
</body>
[解决办法]

探讨
哦,Ajax准备要学习的,不过暂时只能用前台验证的办法了。还有一点问题,弱弱的问下,我有好几个字段要验证,script里也有好几个函数,能不能同时用这个方法?
比如<s:form action="regMember.action" onsubmit="return validator()" onsubmit="return abc()" onsubmit="return xxx()">???
……

读书人网 >J2SE开发

热点推荐