我有一个触发$(“#element”)。加载事件的按钮。此按钮和#element位于“页面A”
中在该元素内部加载Yii activeform(让我们称之为'page B')。此activeform配置为具有ajaxvalidation = true。这显然是失败的,因为在调用activeform时不会加载jquery.yiiactiveform.js文件,因为yiiactiveform.js文件需要在主布局(页面A)中,并将jquery.yiiactiveform.js引用放在那里。
一种解决方案是通过以下方式在'page a'上预加载activeform JS:
Yii::app()->clientScript->registerCoreScript('yiiactiveform');
并拥有相应的JS代码,该代码也绑定了'page a'中的表单操作:
<script type="text/javascript">
/*<![CDATA[*/
jQuery(function($) {
$('#register-form').yiiactiveform({'validateOnSubmit':true,....,'enableAjaxValidation':true}]});
});
/*]]>*/
</script>
另一个是在页面B中有这些JS调用,但这意味着将头标记放在页面B中。我的页面B现在只包含表单元素,没有html,没有正文标记,只有表单标记,因为我们不管怎么说,这个页面只能通过在页面A中加载()来访问。
然而,这种方法并不是很好。这就像在加载的表单中手动绑定适当的JS调用一样,违背了框架的目的。我认为如果Yii activeform JS支持jquery的on()或live()方法,它会有效。
还有其他建议吗?
答案 0 :(得分:0)
找到它。对页面B的renderPartial()调用必须是:
$this->renderPartial('viewfile', array('var'=> $val),false,true);
第4个参数必须设置为true。这样,它处理视图文件并在其中插入相应的JS代码。