如果在ajax更新界面中使用到了CJuiDatePicker组件,那么注意需要重新执行jquery ui datepicker JS的初始化脚本,日期控件才能生效。
另外datepicker控件依赖于jQuery UI插件,所以需要注册jquery ui的CSS和JS文件。具体代码如下:
<?php
Yii::app()->getClientScript()->registerCoreScript('jquery');
Yii::app()->getClientScript()->registerCoreScript( 'jquery.ui' );
Yii::app()->clientScript->registerCssFile(
Yii::app()->clientScript->getCoreScriptUrl().
'/jui/css/base/jquery-ui.css'
);
Yii::app()->clientScript->registerCssFile(
Yii::app()->clientScript->getCoreScriptUrl().
'/jui/css/base/jquery.ui.datepicker.css'
);
?>
重新安装日期控件初始化脚本:
$.ajax({
url:'<?php echo $this->url?>',
type:'post',
data: '&days=' + days,
dataType:'text',
success:function(data){
$("#list").html(data);
$('#begin_time').datepicker(jQuery.extend({showMonthAfterYear:false},jQuery.datepicker.regional['cn'],{'dateFormat':'yy/mm/dd'}));
}
});
如果在CGridView中使用日期控件,那么可以把重新初始化的操作放在afterAjaxUpdate回调中。