2016-03-08 92 views
1

所以我有这个问题,我有带班日期时间输入,我真的结合日期选择它,用:结合日期选择器

$(".date-time").datepicker(); 

一切工作正常,在卡尔蒂克过滤后网格视图,因为它假定日期选择器得到解除绑定(因为pjax重载)。我真的想再次绑定它,有:

$(document).on("pjax:success", function() { 
    $("#calendartasksearch-starttime").datepicker(); 
}); 

和我真的得到无限循环~~

我的网格视图配置:

<?= GridView::widget([ 
    'dataProvider' => $dataProvider, 
    'filterModel' => $searchModel, 
    'pjax' => true,  
    'pjaxSettings' => 
     [ 
      'neverTimeout'=>true, 
      'options'=>['id'=>'pjax-data'], 
      'loadingCssClass' => false, 
     ], 
    'bootstrap' => true, 
    'condensed' => true, 
    'responsive' => true, 
    'showFooter' => true, 
    'hover' => true, 
    'showPageSummary' => true, 
    'resizableColumns' => false, 
    'columns' => $columns, 
    ]); 

色谱柱的输入滤波器:

[ 
'label' => 'Task Start', 
'headerOptions' => ['style' => 'text-align: center;'], 
'attribute' => 'startTime', 
'filter' => Html::activeInput('text', $searchModel, 'startTime', ['style' => 'text-align: center', 'class' => 'form-control date-time']),  
'value' => 'startTime', 
'contentOptions' => ['style' => 'text-align: center; vertical-align: middle;' ], 
], 

编辑。

确定我设法摆脱无限循环使用:

$(document).one("pjax:success", function() { 
    $(".date-time").datepicker(); 
}); 

但我仍可以重新启动插件

回答

0

好吧,我解决它自己。

首先问题是你不能在ajax刷新后重新启动两个.datepicker,它只是进入无限循环[即使你有每个元素的分隔名+ id + class]。

,我解决了这一问题的方法是:

发起一个文件与窗口小部件和第二与activeInpute,象下面这样:

  [ 
      'label' => 'Task Start', 
      'headerOptions' => ['style' => 'text-align: center;'], 
      'attribute' => 'startTime', 
      'filter' => DatePicker::widget(['model' => $searchModel, 'attribute' => 'startTime', 'dateFormat' => 'yyyy-MM-dd', 'options' => ['id' => 'date-time2','style' => 'text-align: center', 'class' => 'form-control']]), 
      'value' => 'startTime', 
      'contentOptions' => ['style' => 'text-align: center; vertical-align: middle;', 'class' => 'datepicker' ], 
     ], 
     [ 
      'label' => 'Task End', 
      'headerOptions' => ['style' => 'text-align: center;' ], 
      'attribute' => 'endTime', 
      'filter' => Html::activeInput('text', $searchModel, 'endTime', ['style' => 'text-align: center', 'id' => 'date-time', 'class' => 'form-control']), 
      'value' => 'endTime', 
      'contentOptions' => ['style' => 'text-align: center; vertical-align: middle;' ], 
     ], 

在起始I initaite日期选取器在有效输入与:

$(document).ready(function(){ 
    $("#date-time").datepicker({ 
     dateFormat:"yy-mm-dd", 
     orientation: "bottom auto" 
    }); 
}); 

AJAX刷新后我重新开始都datepickers有:

$(document).on("pjax:success", function(){ 
    $("#date-time, #date-time2").datepicker({ 
     dateFormat:"yy-mm-dd", 
     orientation: "bottom auto" 
     }); 
}); 

如果anoyone知道更好的方法来做到这一点,请详细说明。