日期:2014-05-20  浏览次数:20905 次

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>