Javascript for CActiveForm 在 renderPartial 之后不可用


Javascript for CActiveForm isnt available after renderPartial

我正在加载一个带有ajaxcall的表单(取决于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。

编辑:我已经检查了我的火虫,jquery.yiiactiveform.js将在ajaxcall之后加载(再次? - 如果我使用:

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

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

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

@Andrew提到的扩展是NLSClientScript。