0

在我的 php 文件中,我有:

$startDate = new DateTime('2013-08-15');
$endDate = new DateTime('2013-10-15');
echo '<div id="filterStartDate">Start Date:</div>';
echo '<div id="filterEndDate">End Date:</div>';

然后在javascript中我有:

$('#filterStartDate').datepicker({
    changeMonth:true,
    changeYear:true,
    dateFormat:'yy-mm-dd',
    onSelect: function( selectedDate ) {
        $( "#filterEndDate" ).datepicker( "option", "minDate", selectedDate );
    }
});
$('#filterEndDate').datepicker({
    changeMonth: true,
    changeYear: true,
    dateFormat:'yy-mm-dd',
    onSelect: function( selectedDate ) {
        $( "#filterStartDate" ).datepicker( "option", "maxDate", selectedDate );
        alert($("#filterEndDate").val());
    }
});

我想知道是否有办法在 PHP 的 datePicker 上设置初始日期。我知道我可以从 php 中生成 javascript,但我认为这很混乱,并希望保持分离。如果有类似的东西会很棒:

echo '<div id="filterStartDate" value="'.$startDate->format('Y-m-d').'">Start Date:</div>';
4

3 回答 3

2

您可以使用数据属性:

$startDate = '2013-08-15'; // new dateTime() returns an object, you need a string
$endDate   = '2013-10-15';

echo '<div id="filterStartDate" data-date="'.$startDate.'">Start Date:</div>';
echo '<div id="filterEndDate" data-date="'.$endDate.'">End Date:</div>';

然后将它们放入 JS 中:

$('#filterStartDate').datepicker({
    changeMonth:true,
    changeYear:true,
    dateFormat:'yy-mm-dd',
    defaultDate: $('#filterStartDate').data('date'), // get data attribute
    onSelect: function( selectedDate ) {
        $( "#filterEndDate" ).datepicker( "option", "minDate", selectedDate );
    }
});
$('#filterEndDate').datepicker({
    changeMonth: true,
    changeYear: true,
    dateFormat:'yy-mm-dd',
    defaultDate: $('#filterEndDate').data('date'),
    onSelect: function( selectedDate ) {
        $( "#filterStartDate" ).datepicker( "option", "maxDate", selectedDate );
        alert($("#filterEndDate").val());
    }
});
于 2013-09-12T22:35:30.237 回答
1

您可以为此使用数据属性:

?>
<div id="filterStartDate" data-initial="<?= $startDate->format('Y-m-d') ?>">
  Start Date:
</div>
<?php // here goes the rest of the code

...然后通过JS收集它,通过...

var initialStartDate = $('#filterStartDate').data('initial');

...然后将其发送到 datepicker(作为defaultDate选项)。

于 2013-09-12T22:34:49.857 回答
0

我想一种解决方案是不使用日历的内联选项,而是使用输入。这样我可以使用:

echo '<input type="text" id="filterStartDate" value="'.$startDate->format('Y-m-d').'" />';

如果有其他方法,我仍然感兴趣。

于 2013-09-12T22:34:12.403 回答