我正在加载一个带有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。