2012-02-01 3 views
1

나는 4 개의 datepicker 일정을 사용하고 있으며 이전에 선택한 날짜를 사용하지 않도록 설정하고 싶습니다. JQuery 날짜 선택 도구에서 아이디어를 얻었지만 2 개의 날짜 선택 도구를 사용하면 괜찮습니다. 4 datepickers. 솔루션 그냥 나와 함께 공유 한 모든 일 ..이 개 날짜 선택이 들어 코드 인 경우 그래서 : 텍스트 입력이 txt4을 통해 txt1ids이있는 경우이전 일정의 JQuery 일정 사용 안 함

$(function() { 
    var dates = $("#txt1, #txt2").datepicker({ 
     minDate:0, 
     maxDate:"+1Y", 
     defaultDate: "+1w", 
     dateFormat:'dd-mm-yy', 
     numberOfMonths: 3, 
     onSelect: function(selectedDate) { 
      var option = this.id == "txt1" ? "minDate" : "maxDate", 
       instance = $(this).data("datepicker"), 
       date = $.datepicker.parseDate(
        instance.settings.dateFormat || 
        $.datepicker._defaults.dateFormat, selectedDate, instance.settings); 
      dates.not(this).datepicker("option", option, date); 
     } 
    }); 
}); 

답변

1

다음과 같은 간단한 뭔가 작동합니다 :

onSelect: function(date) { 
    for(var i = 0; i < dates.length; ++i) { 
     if(dates[i].id < this.id) 
      $(dates[i]).datepicker('option', 'maxDate', date); 
     else if(dates[i].id > this.id) 
      $(dates[i]).datepicker('option', 'minDate', date); 
    } 
} 

데모 : http://jsfiddle.net/ambiguous/Rtbph/

대안 당신의 id을 필요로하지 않습니다,539,526을 사용 정중하게 비교하는 속성는 thusly 히 :

var dates = $('#first, #second, #third, #fourth').datepicker({ 
    // ... 
    onSelect: function(date) { 
     var me = dates.index(this); 
     for(var i = 0; i < dates.length; ++i) { 
      if(i < me) 
       $(dates[i]).datepicker('option', 'maxDate', date); 
      else if(i > me) 
       $(dates[i]).datepicker('option', 'minDate', date); 
     } 
    } 
}); 

그런 다음 당신은 당신의 초기 선택, $('#first, #second, #third, #fourth')가 올바른 순서로 적절한 왼쪽에서 입력을 넣어 있는지 확인해야 할 것이다.

데모 : http://jsfiddle.net/ambiguous/xaVZM/

+0

위대한 데모. 감사. 그게 내가 찾고 있던거야. – mtk