2010-12-13 6 views
6

두 입력 상자에 하나의 "From"날짜와 두 번째 입력란에 ""이라는 Jquery datepicker 플러그인을 사용하고 있습니다. 내가 처음 하나를 설정하면JQuery datepicker-2 입력 시작 및 끝

, 나는 "이 경우 날짜

"에서 "이전에 선택한 날짜보다 모든 날짜를 해제, 두 번째는 첫 번째에서 선택한 날짜 이후 일일되고 싶어 To "날짜가 먼저 선택되면"From "날짜가"To "날짜 전날로 설정됩니다.

나는 몇 가지 예제를 발견했다,하지만 난 낭포가 나는 경우, 예를 들어,에 13/2,010분의 12 15시 50분을 선택 시간으로 날짜를 얻는 방법을 모르는 " 에서 "날짜는의 날짜"받는 사람 "날짜 15시 50분 또는/2010 (14)/12 이상 0시 14/12/2010 로 설정됩니다.

는 *** 편집을 할

난 그냥 내가 원하는대로 작동하지만 timepicker의 부가 기능없이 본 piece of code을 발견했습니다. 나는 timepicker의 부가 기능과 함께 사용할 수 있도록 위의 코드를 기반으로

$(function(){ 

    $('#dateFrom').datepicker({ 
    dateFormat: 'dd/mm/yy', 
    onSelect: function(dateText, inst) { 
     $('#dateTo').datepicker('option','minDate', new Date(inst.selectedYear, inst.selectedMonth, inst.selectedDay)); 
      } 
    }); 
    $('#dateTo').datepicker({ 
    dateFormat: 'dd/mm/yy', 
    onSelect: function(dateText, inst) { 
     $('#dateFrom').datepicker('option','maxDate', new Date(inst.selectedYear, inst.selectedMonth, inst.selectedDay)); 
    }   
    }); 

}); 

, 그것을 적응할 수 있을까?

덕분에 사전에

+0

'onSelect' 메소드 사용시 문제는 datetimepicker 플러그인과 같은 방식으로 동작하지 않는다는 것입니다. 위젯을 닫으려면 하루를 클릭해야한다는 데모 데모에 주목하십시오. 이것은 datetimepicker의 경우가 아닙니다. 아마도 시간 슬라이더 때문일 것입니다. 사용자가 날짜를 선택하거나 (플러그인에서 "완료"를 클릭하거나 위젯을 클릭 할 때) 신뢰할 수있는 이벤트가 없다는 사실은 적어도 내가 한 연구를 통해 이런 방식으로 수행하기가 어렵습니다. . –

+0

@Andrew : 좋아요. 입력으로 아무 것도하지 않을 것이라고 결정했는데, 2 개의 입력 (FROM 및 TO)이있는 또 다른 페이지가 있습니다. 간단한 캘린더 만 있으면 충분하지만, 이 http://jsbin.com/iyobi IE에서 오류가 발생합니다. 이 오류를 없애려면 어떻게해야합니까? – eddy

+0

IE7 또는 IE8의 IE7 모드에서 오류가 표시되지 않습니다. –

답변

1

위젯이 이미 초기화 된 후에 대부분을 얻었지만 hourMinminuteMin을 설정하는 방법을 알 수 없습니다. 다음 HTML을 감안할 때 :

<label for="from">From</label><input id="from" name="from" /> 
<label for="to">To</label><input id="to" name="to" /> 

그리고 이것은 JS :

$("#from").datetimepicker(); 
$("#to").datetimepicker({ 
    beforeShow: function(input, inst) { 
     var $toDateInput = $("#to"); 
     var fromDate = $("#from").datetimepicker("getDate"); 
     var toDate = $toDateInput.datetimepicker("getDate"); 
     var afterFromDate; 

     if (fromDate) { 
      if (!toDate || (toDate <= fromDate)) { 
       afterFromDate = new Date(fromDate.toUTCString()); 
       afterFromDate.setDate(afterFromDate.getDate() + 1);    
       $toDateInput.datetimepicker("setDate", afterFromDate); 
      } 
      $toDateInput.datetimepicker("option", "minDate", fromDate); 
     } 
    } 
}); 

는 여기를 참조하십시오 http://jsfiddle.net/RWjtL/3/

당신의 기준을 대부분 충족하지만, 떨어져있는 몇 가지가있다 :

  • '받는 사람'필드를 공백으로 설정하면 '보낸 사람'의 날짜 피커의 최소 날짜가 제거되지 않습니다. minDate 옵션을 null""으로 설정하고 이상한 동작이 발생했습니다. Here's a documented issue that could be related.
  • beforeShow 메서드는 여러 번 호출됩니다. 나는 이것이 핸들러 내부의 setDate에 대한 호출 때문이라고 생각하지만 확신 할 수 없다.
  • 위와 같이 사실 이후 hourMinminuteMin을 설정하지 못했고 minDate을 설정하면 날짜 부분을 존중하지 않는 것처럼 보입니다.

저자의 GitHub page에는 문제 목록이 있으며, 그 중 일부는 내가 만난 문제와 관련이있는 것으로 보입니다. 적어도 당신을 시작하게하는 희망.

관련 문제