我正在使用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不再可用,所以不应该加载两次?
答案 0 :(得分:1)
您的问题主要是重新加载脚本。 jQuery搞砸了很多东西,但是像YiiActiveForm这样的其他脚本也会搞乱你的应用程序。最好是在您调用ajax的页面上预加载所有需要的脚本,并在使用ajax加载的页面上禁用脚本。您可能希望查看EUpdateDialog扩展名(免责声明:由我撰写),它可能会为您提供一些额外的想法。
答案 1 :(得分:0)
提到的@Andrew扩展名为NLSClientScript。