【问题标题】:jQuery datepicker, add certain number of days once date selectedjQuery datepicker,选择日期后添加一定天数
【发布时间】:2011-11-17 03:31:56
【问题描述】:

一旦用户从日期选择器中选择了日期,我想添加 41 天。

<script language="javascript">
$(document).ready(function() { 

$("#startdate").datepicker({    dateFormat: 'd/m/y'});

    $('#startdate').datepicker({
        onSelect: function(dateStr) {
            var nights = parseInt($('#numofdays').val());
            var depart = $.datepicker.parseDate('d/m/y', dateStr);
            depart.setDate(depart.getDate('d/m/y') + nights);
            $('#calc').val(depart);
         }
    });




});
</script> 


Start: <input type="text" id="startdate" class="datepicker"><br />
<input type="hidden" id="numofdays" value="41"><br />
Calc: <input type="text" id="calc">

【问题讨论】:

    标签: php jquery date datepicker


    【解决方案1】:

    您可能只需要在同一个启动函数中组合选项:

    $("#startdate").datepicker({
        dateFormat: 'd/m/y',
        onSelect: function(dateStr, inst) {
            var nights = parseInt($('#numofdays').val());
            var depart = $.datepicker.parseDate('d/m/y', dateStr);
            depart.setDate(depart.getDate('d/m/y') + nights);
            $('#calc').val(depart.toLocaleDateString());
        }
    });
    

    查看实际操作:http://jsfiddle.net/william/L9Szd/。

    【讨论】:

      【解决方案2】:

      $('#startdate').datepicker('getDate') 将返回一个 Date 对象

      d = $('#startdate').datepicker('getDate');
      d.setDate(d.getDate()+nights); // add int nights to int date
      alert(d);
      

      添加d.getDate() 和nights 将向前跳时间。因此,如果 9/16/2011 + 41 天,您将获得 10/25/2011

      【讨论】:

        【解决方案3】:

        用户选择一个日期会显得很奇怪,然后该框会显示 41 天后的日期,而不是我选择的日期。为什么不用 PHP 做这个添加服务器端呢?

        $date_string = date('Y-m-d', strtotime('+41 days', strtotime($_POST['date_input'])));
        

        【讨论】:

        • 您评论中的关键词是“用户”。他们充满了奇怪的要求。它用于计算,开始和结束日期,期间始终为 41 天。
        【解决方案4】:

        这是我发现的唯一简单方法:

        将日期设置为比所选日期提前 41 天:

        1.从日期选择器字段中获取选定的日期

        var newdate = new Date($("#datepicker_date_field_1").datepicker("getDate"));
        

        2.增加从上面得到的日期

        newdate.setDate(newdate.getDate() + 41);
        

        3.将新形成的日期分配给另一个(或相同的)日期选择器字段

        $("#datepicker_date_field_2").datepicker("setDate",newdate);    
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-04-14
          • 2011-01-02
          • 2014-07-25
          • 2023-03-25
          • 1970-01-01
          相关资源
          最近更新 更多