Свойство showButtonPanel для выбора даты не работает после pjax в yii

#gridview #yii #pjax

#просмотр сетки #иии #pjax #gridview #yii

Вопрос:

Я новичок в Yii. Я добавил класс, в который я загружаю средство выбора даты, у которого есть свойство showButtonPanel, и оно работает хорошо, но когда я нажимаю на reset grid или когда выполняется код pjax, то datepicker работает хорошо, но почему-то кнопки на datepicker не видны или свойство showButtonPanel не работает. Вот код для этого.

 $(document).ready(function() {
    callDatePickers();
});

function callDatePickers() {
    $('.anyDayDatePicker').datepicker({
        autoclose: true,
        pickTime: false,
        dateFormat: 'dd-M-yy',
        defaultDate: new Date(),
        showButtonPanel : true,
        closeText: 'Clear',
        onClose: function () {
            var event = arguments.callee.caller.caller.arguments[0];
            if ($(event.delegateTarget).hasClass('ui-datepicker-close')) {
                $(this).val('');
            }
        }
    }).focus(function (input ) {
        console.log("Hello");
        $(input).datepicker('widget').find('.ui-datepicker-current').hide();
        $('.ui-datepicker-close').addClass('clear-date-btn');
    });
}
  

и в index.php

 <?php yiiwidgetsPjax::begin(['enablePushState' => false, 'id' => 'ictmsTrialEventFrom', 'formSelector' => '#ictms-search-form']); ?>

<?=
    GridView::widget([
        'id' => 'crud-datatable',
         'dataProvider' => $dataProvider,
         'filterModel' => $searchModel,
          'pjax' => false,
          'columns' => require(__DIR__ . '/_columns.php'),
     ])       
 ?>
<?php yiiwidgetsPjax::end() ?>
  

columns.php

 [
        'class' => 'kartikgridDataColumn',
        'attribute' => 'actual_date',
        'width' => '15%',
        'value' => function($model) {
            if (isset($model['actual_date'])) {
                return date(Yii::$app->params['dateFormat'], strtotime($model['actual_date']));
            }
        },
        'filter' => yiijuiDatePicker::widget([
            'model' => $searchModel,
            'attribute' => 'actual_date',
            'language' => 'ru',
            'dateFormat' => 'dd-MM-yyyy',
            'options' => ['class' => 'anyDayDatePicker'],
        ]),
    ],
  

Кто-нибудь может дать мне решение, почему showButtonPanel не работает после pjax? Заранее благодарю.

Комментарии:

1. смогли ли вы решить проблему?

Ответ №1:

Вы должны скорее вызывать свой скрипт по pjax:end событию, чтобы всякий раз, когда загрузка / перезагрузка PJAX завершается заменой содержимого на страницу, вызывался ваш скрипт

Поэтому замените следующий код

 $(document).ready(function() {
    callDatePickers();
});
  

со следующим

 $(document).on('ready pjax:end', function(event) {
  callDatePickers();
});
  

Комментарии:

1. Я пробовал это, но в конце pjax я могу получить оповещение, но showButtonPanel по-прежнему не работает

2. @Amarja не работает , не очень помогает, можете ли вы объяснить, какие у вас возникают ошибки при нажатии на кнопку