在renderPartial之后,CA forForm的Javascript不可用

时间:2013-11-12 17:18:24

标签: javascript php yii renderpartial

我正在使用ajaxcall(触发renderPartial)加载表单(取决于dropDownList的选定选项) ajaxcall看起来像:

$("#dropDownList").change(function() {
        var selected = $(this).val();

        $.ajax({
            url: "index.php?r=item/update&category="+selected,
            cache: false,
            success: function(html){
                $("#inputs").html(html);
            }
        })
    });

行动“更新”:

public function actionUpdate($category){
    $model = new Item;

    $this->renderPartial($category, array(
        'model'=>$model,
    ), false, true);
}

表单将在div“input”中呈现,没有任何问题,但表单仍然没有可用的javascript。我已经用过了

Yii::app()->clientScript->scriptMap['jquery.js'] = false;

要防止,jquery将被加载两次。但是我的表单(jquery.yiiactiveform.js)仍然没有可用的js。

编辑:我检查了我的firebug,jquery.yiiactiveform.js将在ajaxcall之后加载(再次?)。 - 如果我正在使用:

 Yii::app()->clientScript->scriptMap['jquery.yiiactiveform.js'] = false;

jquery.yiiactiveform.js不再可用,所以不应该加载两次?

2 个答案:

答案 0 :(得分:1)

您的问题主要是重新加载脚本。 jQuery搞砸了很多东西,但是像YiiActiveForm这样的其他脚本也会搞乱你的应用程序。最好是在您调用ajax的页面上预加载所有需要的脚本,并在使用ajax加载的页面上禁用脚本。您可能希望查看EUpdateDialog扩展名(免责声明:由我撰写),它可能会为您提供一些额外的想法。

答案 1 :(得分:0)

提到的@Andrew扩展名为NLSClientScript