【发布时间】:2014-02-24 08:52:39
【问题描述】:
我在 Yii 中有一个表单,想通过 Ajax 加载下一步。所以我有以下要求:
$.ajax({
url: jQuery("#form-1").attr("action"),
type: "POST",
data: jQuery(form).serialize()
}).done(function(data) {
jQuery("body").html(data);
});
该网址将我们引向以下内容:
$this->render('formStep2', array('model' => $model));
所以整个视图将被覆盖。 问题是,所有事件触发的 javascript 函数都不起作用。 (例如 afterValidateAttribute 以及鼠标悬停事件等)
如何让这些工作?
绑定代码例如:
jQuery("#collapsor").mouseover(function(e) {
...
jQuery("#collapsing").collapse('show');
...
}
控制台说:“Uncaught TypeError: Object [object Object] has no method 'collapse'”(引导程序)。当我只使用 from bootstrap 建议的 html 代码(和单击)进行折叠时,它就可以工作了......
或者像我说的自动生成的Yii函数“afterValidateAttribute”等等,但根本没有控制台错误。
编辑:当我使用 document.write(ajaxContnent) 时,collapse-thing 正在工作,但没有动画并且 Yii 表单功能仍然无法正常工作......
【问题讨论】:
-
如果你使用jquery,你应该'live'函数。例如:使用 $("#button").live('click', function () {});而不是 $("#button").click(function () {});对其他事件做同样的事情
-
添加有问题的事件绑定代码
-
带有“实时”功能的它也不起作用:(
-
这样做很糟糕。最好尝试使用 ajaxSubmitButton,将表单 id 存储在隐藏字段中,如果保存表单,则使用 renderPartial() 步骤。关于问题 - 我几乎 100% 确定您正在覆盖事件或进行双重绑定。
-
ineersa:问题是,Yii 会在我渲染步骤时生成所需的脚本,所以我不能只执行部分渲染,可以吗?
标签: javascript php jquery ajax yii