繁体   English   中英

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

[英]Yii ActiveForm: Loading a form via jQuery.load

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

一个Yii activeform被加载到该元素内部(我们称其为“页面B”)。 此activeform配置为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现在仅包含form元素,没有html,没有body标签,仅包含form标签,因为我们没有仍然需要它,只有通过在页面A内对其进行load()访问此页面。

但是,这种方法并不是很好。 就像以加载的形式手动绑定适当的JS调用一样,破坏了框架的目的。 我认为,如果Yii activeform JS支持jquery的on()或live()方法,那将会有用。

还有其他建议吗?

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM