通过AJAX调用加载Zii小部件CjuiDatePicker不起作用

时间:2012-03-18 11:09:15

标签: jquery widget yii

问题摘要:
(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(),
        ));
    ?>

如何解决此问题(即在动态生成的表单部分中有工作小部件)?提前致谢!

1 个答案:

答案 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并加载它们。