2012-10-19 2 views
1

사용하지 않아야하는 요일을 실행하려면 다음 날짜로 이동해야합니다. 우리의 booking 개체에 존재하지 않거나 1 미만의 값을 갖는 날은 달력에서 사용하지 않도록 설정해야합니다. 여기 Jquery UI Datepicker 잘못된 날짜 사용 안 함

jsfiddle 내 스크립트 및 데모 버전을 단순화 :

var bookings = { 
    "2012-09-01": 24, 
    "2012-09-03": 31, 
    "2012-09-05": 27, 
    "2012-09-06": 9, 
    "2012-09-07": 18, 
    "2012-09-08": 0, 
    "2012-09-10": 20, 
    "2012-09-12": 19, 
    "2012-09-13": 0, 
    "2012-09-14": 9, 
    "2012-09-15": 24, 
    "2012-09-17": 19, 
    "2012-09-19": 28, 
    "2012-09-20": 15, 
    "2012-09-21": 12, 
    "2012-09-22": 25, 
    "2012-09-24": 19, 
    "2012-09-26": 0, 
    "2012-09-27": 0, 
    "2012-09-28": 0, 
    "2012-09-29": 0 
}; 

function MyEvent(date) 
{ 
    bookings = bookings || {}; 
    this.date = date.toISOString().substr(0, 10); 
    this.display = (typeof bookings[this.date] == 'number' && bookings[this.date] > 0); 
    return this; 
} 

MyEvent.prototype.toArray = function() { 
    return [this.display, null, null]; 
}; 

$(function() 
{ 
    $('#eventCalendar').datepicker({ 
      dateFormat: "yy-mm-dd", 
      firstDay:  1, 
      defaultDate: "2012-09-24", 
      beforeShowDay: function (date) 
      { 
       return new MyEvent(date).toArray(); 
      } 
     } 
    ); 
}); 

어떤 사람이 내가 잘못 일을하거나 버그가있는 무슨 저를 제안 할 수 있습니까?

답변

1

약간의 어려움이 있었지만 버그는 아닙니다. 사용하는 동안 문제가 발생했습니다 :

date.toISOString() 

기능이 시간대 오프셋을 무시하기 때문에,의 플러그에서 전달 된 원래 날짜로부터 (다음날 예를 들어) 다른 날짜를 반환 할 수 있습니다 작동

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/toISOString

따라서 상태가 제대로 작동하지 않습니다.

다음은이 기능을 사용하지 않는 작동 방식입니다. http://jsfiddle.net/nBejK/2/