My97DatePicker是一款很好用的日期插件,有很强的扩展性,可以随意的限制最大值和最小值,还可以调用自定义方法(通过ajax方式来获取服务器的时间)来限制日期插件的最大值。最近项目里用到一个功能,要求两个时间的最大范围不能超过10天,开始时间不能大于结束时间并且两者都不能大于当前服务器的时间。在网上查了很多资料自己又写了一部分代码,终于把功能给完善了。下面就来介绍一下主要代码(因为后台代码不太全,下面的例子里只取客户端的当时时间来演示)。
一、html部分
<body>
<input type="text" name="jccjJmPz.beginTime" id="startTime"
οnclick="WdatePicker({el:'startTime',dateFmt:'yyyy-MM-dd HH:mm:ss',
minDate:'#F{$dp.$D(\'endTime\',{d:-10})}',maxDate:'#F{$dp.$D(\'endTime\')||currentTime()}' })" class="Wdate" />
至
<input type="text" name="jccjJmPz.endTime" id="endTime"
οnclick="WdatePicker({el:'endTime',dateFmt:'yyyy-MM-dd HH:mm:ss',
<span style="white-space:pre"> </span>minDate:'#F{$dp.$D(\'startTime\')}',maxDate:getMaxDate() })" class="Wdate" />
</body>
注:#F{}里可以写自定义脚本,#F{$dp.$D(\'endTime\')||currentTime()}, 当结束时间为空时,将调用 currentTime()来获取当前时间
二、js部分
//此方法用于获取数据库服务器的时间,代码不完整,如果有需求的话自己实现吧。
function DBCurrentTime() {
var dbCurrentTime="";
$.ajax({
type:'post',
dataType:"text",
async:false,
url:"../**!getDBCurrentTime.do?time="+new Date()+"'/>",//查询数据库时间用到的SQL:select to_char(sysdate,'yyyy-MM-dd hh24:mi:ss') from dual
success:function(data,textStatus){
if(textStatus=="success"){
dbCurrentTime=data;
}
},
error:function(){
dbCurrentTime = currentTime();
}
})
return (dbCurrentTime);
}
function currentTime() {
var now = new Date();
var year = now.getFullYear();
var month = now.getMonth() + 1;
var day = now.getDate();
var hh = now.getHours();
var mm = now.getMinutes();
var clock = year + "-";
if (month < 10) clock += "0";
clock += month + "-";
if (day < 10) clock += "0";
clock += day + " ";
if (hh < 10) clock += "0";
clock += hh + ":";
if (mm < 10) clock += '0';
clock += mm;
return (clock);
}
<pre name="code" class="javascript">//计算结束时间的最大值
function getMaxDate(){
var clock=currentTime();
var dt;
var times=0;
dt=$("#startTime").val();
if(dt!=''){
times =Date.parse(dt.replace(/-/g,'/'))+10*24*60*60*1000;//时间间隔为10天
if(times-Date.parse(clock.replace(/-/g,'/'))<0){
var d1 = new Date(times);
var year = d1.getFullYear();
var month = d1.getMonth() + 1; //月份以0开头
var day = d1.getDate();
var hh = d1.getHours();
var mm = d1.getMinutes();
var clock = year + "-";
if (month < 10) clock += "0";
clock += month + "-";
if (day < 10) clock += "0";
clock += day + " ";
if (hh < 10) clock += "0";
clock += hh + ":";
if (mm < 10) clock += '0';
clock += mm;
}
}
return clock;
}
三、实例下载地址:http://download.csdn.net/detail/zdx1515888659/8767819
注:下载地址里的例子有点问题,但是没法儿改了,自己对照博文改一下吧