0

我有一个触发 $("#element").load 事件的按钮。此按钮和#element 在“页面 A”内

Yii activeform 被加载到该元素中(我们称之为“页面 B”)。此活动表单配置为具有 ajaxvalidation=true。这显然会失败,因为调用 activeform 时不会加载 jquery.yiiactiveform.js 文件,因为 yiiactiveform.js 文件需要位于主布局(页面 A)中并将 jquery.yiiactiveform.js 引用放在那里。

一种解决方案是通过以下方式在“页面 a”上预加载 activeform JS:

Yii::app()->clientScript->registerCoreScript('yiiactiveform');

并具有相应的 JS 代码,该代码也将表单操作绑定在“页面 a”中:

<script type="text/javascript">
/*<![CDATA[*/
jQuery(function($) {
$('#register-form').yiiactiveform({'validateOnSubmit':true,....,'enableAjaxValidation':true}]});
});
/*]]>*/
</script>

另一种是在页面 B 中调用这些 JS,但这意味着将 head 标签放在页面 B 中。我的页面 B 现在只包含表单元素,没有 html,没有正文标签,只有表单标签,因为我们不无论如何都需要它,这个页面只能通过在页面 A 中加载()来访问。

然而,这种方法并不是很好。这就像在加载的表单中手动绑定适当的 JS 调用,违背了框架的目的。我认为如果 Yii activeform JS 支持 jquery 的 on() 或 live() 方法,它会起作用。

还有其他建议吗?

4

1 回答 1

0

找到了。对页面 B 的 renderPartial() 调用必须是:

$this->renderPartial('viewfile', array('var'=> $val),false,true);

第 4 个参数必须设置为 true。有了这个,它处理视图文件并在其中插入相应的 JS 代码。

于 2012-08-02T03:13:37.680 回答