4

2 つのテキスト フィールドを使用して、jQuery UI の datepicker を使用して日付範囲を作成しようとしています。最初のテキスト フィールド「start_date」で開始日を設定し、2 番目のテキスト フィールド「end_date」で終了日を設定します。

私が今まで持っているコードはこれです:

$('#start_date').live(
    'focus',
    function()
    {
        $('#end_date').datepicker(
            {
                dateFormat: 'dd MM yy',
                minDate: new Date(),
                maxDate: new Date(2012, 9, 15),
                stepMonths: 2,
                numberOfMonths: 2
            }
        );

        $(this).datepicker(
            {
                dateFormat: 'dd MM yy',
                minDate: new Date(),
                maxDate: new Date(2012, 9, 15),
                stepMonths: 2,
                numberOfMonths: 2,
                onSelect: function(dateText, inst)
                {
                    var instance = $( this ).data("datepicker");

                    var date = $.datepicker.parseDate(instance.settings.dateFormat, dateText, instance.settings);

                    $('#end_date').datepicker('option', 'minDate', dateText);
                }
            }
        );
    }
);

: すべてのページ コンテンツが AJAX 呼び出しで読み込まれるため、ライブ イベントとフォーカス イベントを使用します。多分それは正しいか間違っているかもしれませんが、これは私がここで尋ねたいことではありません;)

上記のコードは私にとっては正しく、正常に動作しますが、私がやりたいことは、「end_date」要素の値を選択した 1 +3 日に設定することです。

今まで、「start_date」要素で日付を選択すると、「end_date」要素が「start_date」と同じ日付に変更されました。これは私が変更したいものです。「end_date」は、「start_date」要素から +3 日であり、選択が追加されます。

どうやってやるの ?

4

3 に答える 3

13

+1 日の end_date を設定するには

onSelect: function(dateText, inst) {
    $('#start_date').datepicker('option','minDate', new Date(inst.selectedYear, inst.selectedMonth, inst.selectedDay));
    var toDate = new Date(inst.selectedYear, inst.selectedMonth, inst.selectedDay);//Date one month after selected date
    var oneDay = new Date(toDate.getTime()+86400000);
    document.getElementById('end_date').value =$.datepicker.formatDate('dd/mm/yy', oneDay);
}
于 2012-05-10T08:32:39.160 に答える
4

ひやデモhttp://jsfiddle.net/96Lbf/ _

このデモでは、日付選択を考慮してtoテキスト ボックスを設定します。+3 days

jqueryコード

   $(function() {
        $( "#from, #to" ).datepicker({
            defaultDate: "+1w",
            changeMonth: true,
            numberOfMonths: 1,
            onSelect: function( selectedDate ) {
                if(this.id == 'from'){
                  var dateMin = $('#from').datepicker("getDate");
                  var rMin = new Date(dateMin.getFullYear(), dateMin.getMonth(),dateMin.getDate() + 1); 
                  var rMax = new Date(dateMin.getFullYear(), dateMin.getMonth(),dateMin.getDate() + 3); 
                  //$('#to').datepicker("option","minDate",rMin);
                  //$('#to').datepicker("option","maxDate",rMax);  
$('#to').val($.datepicker.formatDate('mm-dd-yy', new Date(rMax)));                    
                }

            }
        });
    });

HTML

<div class="demo"> 

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

</div>​
于 2012-05-10T08:38:49.313 に答える
1

month = 4 の場合、car1 の画像が表示されます。もし月=5ならcar3の写真が見たいです。どうすればいいですか?

//..............
onSelect: function( selectedDate ) {
  if(this.id == 'from'){
    var dateMin = $('#from').datepicker("getDate");
    var rMin = new Date(dateMin.getFullYear(), dateMin.getMonth(),dateMin.getDate() + 0);
    alert (rMin.getMonth());
    if(rMin.getMonth() == 4){ 
      var image1=new Image();
      image1.src="car1.jpg"
      if(rMin.getMonth() ==5){
        var image2=new Image()
        image2.src="car3.jpg";
      }                           
    }
  }
}

    <label for="from">From</label> 
    <input type="text" id="from" name="from"/> 

    <label for="pics">pics</label> 
    <input type="image"
           src="car1.jpg"
           id="pics"
           name="pics"
           alt="Submit"
           width="48" height="48">

...............
于 2013-06-14T15:36:51.233 に答える