渲染部分后,CActiveForm的Javascript不可用

渲染部分后,CActiveForm的Javascript不可用,javascript,php,yii,renderpartial,Javascript,Php,Yii,Renderpartial,我正在加载带有ajaxcall(触发renderPartial)的表单(取决于dropDownList的所选选项) ajaxcall看起来像: $("#dropDownList").change(function() { var selected = $(this).val(); $.ajax({ url: "index.php?r=item/update&category="+selected, cach

我正在加载带有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);
            }
        })
    });
“更新”操作:

表单将在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不再可用,因此不应该加载两次?

您的问题主要是重新加载脚本。jQuery会把一切都搞得一团糟,但是像YiiActiveForm这样的脚本也会把应用程序搞得一团糟。最好是在调用ajax的页面上预加载所有需要的脚本,并在使用ajax加载的页面上禁用脚本。您可能想看看扩展(免责声明:由我编写),它可能会给您一些额外的想法。

提到的扩展@Andrew是。

如果我使用ajaxcall在我的视图中加载脚本,脚本将存在两次(在此视图中),因此,无论如何它都不会工作。根据我个人的经验,当处理与您类似的任务时,问题在于重新加载。jQuery总是会出现问题,但其他脚本有时也会重新加载,从而产生问题。最简单的解决方案是在scriptMap中禁用它们。我的同事也遇到了类似的问题,所以他找到了一些扩展,如果脚本已经加载,则会禁用这些脚本,但我记不起扩展的名称,因此您可能需要仔细研究Yii扩展。
 Yii::app()->clientScript->scriptMap['jquery.yiiactiveform.js'] = false;