【问题标题】:How to insert PHP value in jQuery Datepicker如何在 jQuery Datepicker 中插入 PHP 值
【发布时间】:2012-11-14 04:13:27
【问题描述】:

我有以下代码来设置日期选择器的最小日期。

$( "#sd" ).datepicker({
    // before datepicker opens run this function
    beforeShow: function(){
        // this gets today's date       
        var theDate = new Date();
        // sets "theDate" 2 days ahead of today
        theDate.setDate(theDate.getDate() + 2);
        // set min date as 2 days from today
        $(this).datepicker('option','minDate',theDate);         
    },
    // When datepicker for start date closes run this function
    onClose: function(){
        // this gets the selected start date        
        var theDate = new Date($(this).datepicker('getDate'));
        // this sets "theDate" 1 day forward of start date
        theDate.setDate(theDate.getDate() + 1);
        // set min date for the end date as one day after start date
        $('#ed').datepicker('option','minDate',theDate);

    }
});

如果今天的日期是 11/14/2012,那么 datepicker 的值就是 11/16/2012。但是,由于日期应该基于服务器的日期时间,所以我不能使用 javascript 日期,因为它将获取计算机的当前日期而不是服务器的日期。

所以我所做的就是将其更改为以下代码:

$( "#sd" ).datepicker({
    // before datepicker opens run this function
    beforeShow: function(){
        // this gets today's date       
        var theDate = new Date();
        // sets "theDate" 2 days ahead of today
        //theDate.setDate(theDate.getDate() + 2);
        theDate.setDate(<?php echo $this->session->userdata('checkin') ?>);
        // set min date as 2 days from today
        $(this).datepicker('option','minDate',theDate);         
    },
    // When datepicker for start date closes run this function
    onClose: function(){
        // this gets the selected start date        
        var theDate = new Date($(this).datepicker('getDate'));
        // this sets "theDate" 1 day forward of start date
        theDate.setDate(theDate.getDate() + 1);
        // set min date for the end date as one day after start date
        $('#ed').datepicker('option','minDate',theDate);

    }
});

请看一下这一行:

theDate.setDate(<?php echo $this->session->userdata('checkin') ?>);

顺便说一句,我正在使用 codeigniter 会话。

这很好用,但问题是 datepicker 中的最小日期未设置为 11/16/2012,而是设置为 11/2/2012。

有人知道如何将 PHP 值正确插入到 jQuery 中吗?

【问题讨论】:

  • 您确定 $this->session->userdata('checkin') 的值实际上不是 11/2/2012..??
  • 我确定该值为 11/16/2012..
  • 根据您在此处显示的内容,情况似乎并非如此。您只是在回显该值,并且您正在获得一个值,因此这必须是我所看到的存储在该会话变量中的值。如果此时将整个会话数组转储到屏幕上会怎样?那你会得到什么?
  • 似乎如果你在两端都使用 UTC 日期会有所帮助

标签: php jquery datepicker


【解决方案1】:

我已经找到答案了。这里是:

$( "#sd" ).datepicker({
    // before datepicker opens run this function
    beforeShow: function(){
        // this gets today's date       
        var theDate = new Date();
        theDate.setDate(<?php echo date('d', strtotime($this->session->userdata('checkin'))) ?>);
        // set min date as 2 days from today
        $(this).datepicker('option','minDate',theDate);         
    },
    // When datepicker for start date closes run this function
    onClose: function(){
        // this gets the selected start date        
        var theDate = new Date($(this).datepicker('getDate'));
        // this sets "theDate" 1 day forward of start date
        theDate.setDate(theDate.getDate() + 1);
        // set min date for the end date as one day after start date
        $('#ed').datepicker('option','minDate',theDate);

    }
});

它应该只提取一天而不是整个日期。

theDate.setDate(<?php echo date('d', strtotime($this->session->userdata('checkin'))) ?>);

代替

theDate.setDate(<?php echo $this->session->userdata('checkin') ?>);

【讨论】:

    猜你喜欢
    • 2017-01-24
    • 2014-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-19
    • 2012-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多