Start Building Professional
Web Apps Today


 
Categories Question details Back To List
Question  posted by Jeremy on Apr 08, 2008 09:52
open dhtmlx forum
cannot click dates between range created with double calendar

I'm using a double calendar to create a date range and have the following issue.

When I use setFormatedDate to set the correct default dates the dates in the calendar are set correctly. However, I cannot click any dates between fromDate and toDate on the calendar itself. For instance, if I set fromDate in the left cal to be 2008-03-08 and toDate in the right cal to be 2008-04-08 I cannot click any date between the two. Why not?

var mCal = new dhtmlxDblCalendarObject('cal_',false,{isMonthEditable: true, isYearEditable: true});
mCal.leftCalendar.setOnClickHandler(function(date){setRangeDate(this,date,'fromDate')});
mCal.rightCalendar.setOnClickHandler(function(date){setRangeDate(this,date,'toDate')});
var fromDate = document.getElementById('fromDate').value;
var toDate = document.getElementById('toDate').value;
mCal.leftCalendar.setFormatedDate('%Y-%m-%d',fromDate);
mCal.rightCalendar.setFormatedDate('%Y-%m-%d',toDate);
mCal.draw();

thanks,
Jeremy
Answer posted by Support on Apr 09, 2008 03:10
The onClick event is blockable, so if you return false or nothing from event handler it will result in event blocking
So to work correctly , code need to be updated in next way
    mCal.leftCalendar.setOnClickHandler(function(date){setRangeDate(this,date,'fromDate'); return true; });
    mCal.rightCalendar.setOnClickHandler(function(date){setRangeDate(this,date,'toDate'); return true; });
Answer posted by Jeremy on Apr 09, 2008 07:57
Thanks for the prompt response,
   I've updated the handler code as advised.  However, the problem still exists. 
I've attached a screen shot of the calendar and pasted the current code related to the calendar.

note: Effect.toggle is a call to scriptaculous that fades the calendar into view.

function dateChooser(elem){  
   Effect.toggle('cal_','appear',{duration:.3});
   Effect.toggle('calCont','appear',{duration:.3});
   if(document.getElementById('cal_').style.display=='none'){
      document.getElementById('cal_').innerHTML='';
      var mCal = new dhtmlxDblCalendarObject('cal_',false,{isMonthEditable: true, isYearEditable: true});
      mCal.leftCalendar.setOnClickHandler(function(date){setRangeDate(this,date,'fromDate');return true;});
      mCal.rightCalendar.setOnClickHandler(function(date){setRangeDate(this,date,'toDate');return true;});
      var fromDate = document.getElementById('fromDate').value;
      var toDate = document.getElementById('toDate').value;
      mCal.leftCalendar.setFormatedDate('%Y-%m-%d',fromDate);
      mCal.rightCalendar.setFormatedDate('%Y-%m-%d',toDate);
      mCal.draw();
   }
}
setRangeDate = function(calObj,date,elem){
   var d  = calObj.getFormatedDate("%Y-%m-%d",date);
   document.getElementById(elem).value=d;
   return true;
}


Thank you!
  Jeremy
Attachments (1)
Answer posted by Support on Apr 10, 2008 02:48
Please check attached sample - the issue still not recostructable with your code, but we was able to reconstruct the similar behaviour with different initialization code.
To resolve issue - please try to use dhtmlxcalendar.js from attached sample.
Attachments (1)