0

いくつかのタスクを達成するために、datepicker ファイルで多くのことが行われています。1.) 選択した日付または週末をブロックできるようにする必要がありました (コードは機能するため、以下には含まれていません) 2.) エンド ユーザーがそれよりも少ない日付を選択できないように、各フィールドに最小日付と最大日付が必要でした。 、開始日から 3 日 (下記参照)

私の問題は、私のウェブサイトでは、訪問者が日付を選択したページに戻って、必要に応じて滞在を延長または短縮するために日付を変更できることです。しかし、戻ってきたとき、最小/最大日付ルールがそのまま維持されるように、フィールドに適切に事前入力することができないようです。以下のコードを変更して、値の (再) 挿入中に最小/最大ルールが保持されるようにするにはどうすればよいですか。

//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()
        });
4

1 に答える 1

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()

デモ: http://jsfiddle.net/XtS9B/4/

于 2012-11-15T11:20:53.527 に答える