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

解決策の 1 つは、カレンダーのインライン オプションを使用せず、代わりに入力を使用することだと思います。そうすれば、次のように使用できます。

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

他の方法があれば、私はまだ興味があります。

于 2013-09-12T22:34:12.403 に答える