Yii ActiveForm:通过jQuery.load加载表单


Yii ActiveForm: Loading a form via jQuery.load

我有一个触发$("#element").load事件的按钮。此按钮和#元素位于"A页"内

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

一种解决方案是通过在"页面a"上预加载活动表单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调用,但这意味着在页面B内放置head标记。我的页面B现在只包含form元素,没有html,没有body标记,只有form标记,因为我们无论如何都不需要它,这个页面只能通过在页面A内加载()来访问。

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

还有其他建议吗?

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

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

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