0

我正在加载一个带有 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“输入”中呈现,但仍然没有可用于表单的 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 不再可用,所以不应该加载两次?

4

2 回答 2

1

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

于 2013-11-12T18:46:47.907 回答
0

@Andrew 提到的扩展名是NLSClientScript

于 2013-11-12T21:35:44.833 回答