问题摘要:
(i)形式静态部分的小部件工作正常;但
(ii)在动态生成的部分中,仅显示文本字段(单击它不会创建用于选择日期的日历)
下面的代码显示了“动态”尝试:
(1)用户可以点击“(+)日期”:
<?php echo CHtml::link('(+) Date','javascript:void(0);',array('class'=>'date-add'))?>
(2)jquery处理程序执行AJAX请求:
<script>
$(".date-add").click(function() { $.ajax({
success: function(html) {$(".date-list").append(html);}, type: 'get',
url: '<?php echo $this->createUrl('CreateDate')?>',
data: {index: counter++}, cache: false, dataType: 'html'
});});
</script>
(3)jquery处理程序触发actionCreateDate:
model = new Date;
$this->renderPartial('_newDate', array(
'model' => $model,
));
(4)视图代码是
<?php
$this->widget('zii.widgets.jui.CJuiDatePicker', array(
'name'=>'Date', 'options'=>array(),'htmlOptions'=>array(),
));
?>
如何解决此问题(即在动态生成的表单部分中有工作小部件)?提前致谢!
答案 0 :(得分:8)
你的问题基本上是(3),当你做渲染部分时,渲染内容的js不会被占用。因此你可以解决这个问题 -
model = new Date;
$this->renderPartial('_newDate', array(
'model' => $model,
));
as -
model = new Date;
$this->renderPartial('_newDate', array(
'model' => $model,
), false, true);
CController :: renderPartial函数的第四个参数处理渲染内容的js并加载它们。