[英]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.