2012-11-14 2 views
0

몇 가지 작업을 수행하기 위해 내 datepicker 파일에서 많은 일들이 진행되고 있습니다. 1.) 선택한 날짜 또는 주말을 차단할 수 있어야했습니다 (작동하는 코드는 아래에 포함되지 않음) 2.) 최종 사용자가 다음보다 작은 항목을 선택할 수 없도록 각 필드에 최소 및 최대 날짜가 필요했습니다. , 시작일로부터 3 일 (아래 참조)두 개의 datepicker 필드에 대한 jquery datepicker 값을 수동으로 (다시) 삽입합니다.

내 웹 사이트 방문자가 날짜를 선택한 페이지로 돌아와 필요에 따라 체류 기간을 단축하거나 단축 할 수 있다는 점이 문제입니다. 하지만 돌아 왔을 때 필자는 필자의 필드를 미리 미리 채울 수 없어 내 최소/최대 날짜 규칙이 그대로 유지됩니다. 값을 다시 삽입하는 동안 최소/최대 규칙이 유지되도록 아래 코드를 어떻게 수정합니까?

//CORE DATEPICKER FUNCTION 
$(document).ready(function() { 
$.datepicker.setDefaults({dateFormat: 'mm/dd/yy',minDate: +3,maxDate: "1Y +3D",changeMonth: true,firstDay: 1,changeYear: true,numberOfMonths: 2,constrainInput:true,beforeShowDay:nationalDays,}); 

$('#datepicker_start').datepicker({ 
      onSelect: function(selectedDate) { 
    var minDate = $(this).datepicker('getDate'); 
    if (minDate) {minDate.setDate(minDate.getDate() + 3);}//min nights required 
    $('#datepicker_end').datepicker('option', 'minDate', minDate || 1); 
    days(); 
}}).val('12/11/2012'); 
$('#datepicker_end').datepicker({minDate: 1, onSelect: function(selectedDate) { 
    var maxDate = $(this).datepicker('getDate');  
    if (maxDate) {maxDate.setDate(maxDate.getDate() - 1);} 
    $('#datepicker_start').datepicker('option', 'maxDate', maxDate); // Date - 1  
    days(); 
}}).val('12/15/2012'); 
    $('#datepicker_start,#datepicker_end').change() 
     }); 
+0

문제가 무엇인지 명확하지. jsfiddle.net의 데모가 도움이 될 것입니다. CSS – charlietfl

+0

에 대해 jQuery UI CDN 리소스를 사용할 수 있습니다. 위와 같은 날짜를 삽입하면 필드에 나타나지만 최소/최대 날짜 규칙은 유지되지 않는다는 것을 명확히하기 위해 유감입니다. 그게 더 합리적입니까? 내가 이것의 설정을 할 수 있는지 알게 될 것이다. –

+0

demo defintely .. 문제가 무엇인지 알기가 훨씬 쉬울 것입니다. – charlietfl

답변

1

기본적으로 onSelect 옵션과 동일한 코드를 실행할 수 있어야합니다. 이 코드를 별도의 함수로 래핑하면 onSelect 핸들러뿐만 아니라 페이지가로드 될 때 함수를 호출 할 수 있습니다.

function setEndMin(){ 
    var minDate = $('#datepicker_start').datepicker('getDate'); 
     if (minDate) { 
      minDate.setDate(minDate.getDate() + 3); 
     } //min nights requires 
     $('#datepicker_end').datepicker('option', 'minDate', minDate || 1); 

} 

$('#datepicker_start').val('12/11/2012').datepicker({  
    onSelect: function(selectedDate) { 
     setEndMin(); 
    } 
}); 
/* after create both pickers can process min/max*/ 
setEndMin() 

DEMO : http://jsfiddle.net/XtS9B/4/

+0

고마워, 그게 내가 원하는거야. 기괴한 부분은 그러나 내가 jsfiddle에서 똑같은 코드를 가져 와서 내 사이트에 올리면 작동하지 않습니다. datepicker 필드가 전혀 작동하지 않습니다. 어떤 아이디어? jsfiddle에서와 똑같은 코드를 그대로 사용하고 있습니다. –

+0

'document.ready'에 싸여 있는지 확인하십시오. 콘솔에서도 오류가 있는지 확인하십시오. – charlietfl

+0

그게 다야, document.ready가 누락되었습니다. - 고마워요! 때때로 나는 기초를 완전히 잊는다. 이 일에 당신의 도움을 주셔서 감사합니다! –