当我使用带有Rails表单的iFrame时,我遇到了无法触发回调的问题。我所做的是动态创建表单的iFrame:
$('#mapMain').append('<iframe id="saveAreaForm" />');
$('#saveAreaForm').attr('src', "areas/new");
这是表格代码:
= simple_form_for(@area, :remote => true, :html => { :id => 'create_area_form' }) do |f|
.field
= f.label :name
%br
= f.text_field :name
-#.field
-# %br
-# = f.association :area_group
.field
= f.text_field :pointsTxt
%br
.actions
= f.submit
= link_to 'Cancel', '#', {:id => 'cancel_save'}
然后我添加一个回调函数来监听动作(它运行没有错误),我尝试了不同数量的函数参数:
$('#saveAreaForm').contents().find('#create_area_form').load(function () {
$('#saveAreaForm').contents().find('#create_area_form').bind('ajax:success', function(e, data, status, xhr) {
alert("success!");
}).
live('ajax:loading', function() {
alert("loading!");
}).live
('ajax:complete', function(dr) {
alert("complete!");
}).live
('ajax:error', function() {
alert("error!");
});
});
然后我输入表单并按提交。以上事件都没有被触发但控制器动作被调用(我已经使用了bind和live)并且在FireBug中我得到了响应:
我在另一个地方使用回调(对于链接而不是表单提交)并且工作正常。
我唯一可以想到的是iFrame没有返回回调,因为当我分配上面的回调时,我引用了我正在使用的id。
答案 0 :(得分:1)
有可能尚未加载iframe。您是否考虑过在iframe中设置回调并从内部调用父级?