统计报表软件FineReport中日期控件如何校验JS

2025-10-25 17:52:05

1、具体效果图如下:

具体错误见效果图报错警告。

统计报表软件FineReport中日期控件如何校验JS

2、打开模板

打开模板:%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Parameter\TimeScale\TimeScale.cpt。

如下图参数界面:

统计报表软件FineReport中日期控件如何校验JS

3、增加事件

给查询按钮增加点击事件,具体的JS代码如下:

var start = this.options.form.getWidgetByName("starttime").getValue();  

var end = this.options.form.getWidgetByName("endtime").getValue();  

if( start == "" || start==null){  //判断开始日期是否为空

  alert("错误,开始时间不能为空");   //开始日期参数为空时提示

  return false;  

};  

if(end == "" || end==null){  //判断结束日期是否为空

  alert("错误,结束时间不能为空");   //结束日期参数为空时提示

  return false;  

};  

if( start > end){   //判断开始日期是否大于结束日期

  alert("错误,开始时间不能大于结束时间");   //开始日期大于结束日期时提示  

  return false;  

}

var startdate = new Date(start);   //将开始日期转化为Date型

var enddate = new Date(end);    //将结束日期转化成Date型

var subdate = (enddate-startdate)/ (1000 *60 *60 *24);   //将两个日期相减得出的毫秒数转化为天数

if(subdate>15){    //判断结束日期是否超过开始日期后15天

alert("错误,结束日期必须在开始日期15天之内");    //结束日期超过开始日期后的十五天时提示

return false;

}

注:虽然参数控件中也可以设置校验,但是参数控件要点击控件后才能进行校验,因此参数界面的不能为空以及比较校验需要在查询按钮中设置。

4、效果查看

分页预览模板,选择开始时间和结束时间,使这两个日期之间相差超过15天,就会弹出上述对话框。

注:上述js代码在火狐,谷歌IE9等浏览器下没有问题,但是在IE8以及IE8以下的ie浏览器版本中时判断两个日期之间的差值的警告框则不会起作用。可用以下代码:

var start = this.options.form.getWidgetByName("starttime").getValue();    

var end = this.options.form.getWidgetByName("endtime").getValue();    

if( start == "" || start==null){  //判断开始日期是否为空  

  alert("错误,开始时间不能为空");   //开始日期参数为空时提示  

  return false;    

};    

if(end == "" || end==null){  //判断结束日期是否为空  

  alert("错误,结束时间不能为空");   //结束日期参数为空时提示  

  return false;    

};    

if( start > end){   //判断开始日期是否大于结束日期  

  alert("错误,开始时间不能大于结束时间");   //开始日期大于结束日期时提示    

  return false;    

}  

var aDate  =  start.split("-")  

var startdate =  new  Date(aDate[1]  +  '-'  +  aDate[2]  +  '-'  +  aDate[0])    //转换为MM-dd-yyyy格式  

alert(startdate);

var aDate  =  end.split("-")  

var enddate  =  new  Date(aDate[1]  +  '-'  +  aDate[2]  +  '-'  +  aDate[0])  

alert(enddate);

var subdate=  ((enddate  -  startdate)  /1000/  60/60/24)    //把相差的毫秒数转换为天数  

alert(subdate);

if(subdate>15){    //判断结束日期是否超过开始日期后15天  

alert("错误,结束日期必须在开始日期15天之内");    //结束日期超过开始日期后的十五天时提示  

return false;  

}

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢