日历控件My97DatePicker WdatePicker屏蔽 onchange的解决方法
http://www.cnblogs.com/wan-feng/archive/2013/12/13/3473439.html
受下面文章的启发,使用DatePicker自带的年月日相关的change事件,可以“勉强”实现input控件的onchange(),直接上代码:
1、第一种方式:利用DatePicker提供的年、月、日、时、分、秒 changing和changed事件,缺点是有时必须每个事件都列出来,且点“今天”、“确定”等按钮是不响应的,代码如下:
$startTime.on("focus",function(){ WdatePicker({
dateFmt:'yyyy-MM-dd',
dchanged: function(dp){ setDatePickerValue( dp.cal.getNewDateStr(), $endTime,timeType);} ,
Mchanged: function(dp){ setDatePickerValue( dp.cal.getNewDateStr(), $endTime,timeType);} ,
ychanged: function(dp){ setDatePickerValue( dp.cal.getNewDateStr(), $endTime,timeType);}
});
});
2、第二种方式:利用DataPicker提供的onpicking和onpicked事件,该事件能响应该控件的所有选择操作,当然就包括“今天”按钮,但是“清空”按钮不会响应,它有自己的事件onclearing和oncleared,所有推荐使用这种方式来做change;
$startTime.bind("focus", function () {
WdatePicker({
dateFmt: 'yyyy-MM-dd',
maxDate: getShortDate(),
minDate: '2006-01-01',
onpicking: function (dp) {if (dp.cal.getDateStr() != dp.cal.getNewDateStr()) { setDatePickerValue(dp, $startTime, $endTime, "start_click", timeType); }}
});
});
function setDatePickerValue(newDate,$endTime,timeType)
{
if(timeType=="day")
{
var startTime=new Date(newDate);
var endTime=new Date(startTime.getTime()+1*24*60*60*1000);
$endTime.val(endTime.getFullYear() + "-" + (endTime.getMonth() + 1) + "-" + endTime.getDate());
}
if(timeType=="month")
{
var startTime=new Date(newDate);
var smonth=startTime.getMonth+1;
var m;
if(smonth==1||smonth==3||smonth==5||smonth==7||smonth==8||smonth==10||smonth==12)
{
m=startTime.getTime()+31*24*60*60*1000;
}
else{
m=startTime.getTime()+30*24*60*60*1000;
}
var endTime=new Date(m);
$endTime.val(endTime.getFullYear() + "-" + (endTime.getMonth() + 1));
}