2009-08-10 72 views
0

我使用带Boxy插件的JQuery。jquery with boxy插件 - 通过ajax加载并提交表单

当用户点击一个链接一个页面上,我呼吁Boxy.load加载形状,其上弹出。表单加载并显示在弹出窗口中,没有问题。

但是,我不能形式向提交绑定事件,因为我不能选择窗体元素。

这是事件处理程序:

$('#flag-link a.unflagged').click (function(e) { 
     url = $(e.target).attr('href'); 
     Boxy.load(url, {behaviours: function(r) { 
      alert ($("#flag-form").attr('id')); 
      } 
     }); 
    }); 

警报显示为“未定义”时,显示它。

这是形式:

<form id="flag-form" method="POST" action="somepage">   
    <table> 
     <tr><td><input type="text" name = "name"></td></tr> 
     <tr><td><input type="submit" value="OK"></td></tr> 
    </table> 
</form> 

我在做什么错?

回答

1

据我了解,live()方法必须被用来在这种情况下,一个元素绑定到一个事件:

$("#flag-form").live("submit", function(){ ... } 

目前,现场方法记录在案,以将不支持提交事件。不过,我可以使用Chrome和FF来解决这个问题。另一方面,我无法在IE中使用它。跨浏览器兼容性的更好方法似乎是将表单的提交按钮绑定到click事件。

$("#flag-form-submit").live("click", function(){ 
1

首先(小点,但潜在的麻烦来源),应该是id="flag-form"而不是id = "flag-form"(无空格)。

其次,你不应该需要r.find()。只要做到$("#flag-form").attr("id")

+0

+1 - 打我到它。只是不得不放弃相同的两点。 – karim79 2009-08-10 22:51:57

+0

谢谢。 r.find()只是我尝试选择表单的很多方法之一。不幸的是,问题依然存在。 – shanyu 2009-08-10 22:58:22

0

我了解到,在申报作品behaviours: function (e) {}方法,除了使用活()方法。

例如为:

$('#flag-link a.unflagged').click (function() { 
    Boxy.load(this.href, { 
     behaviours: function(r) { 
     r.find('#flag-form').bind('submit', function() { 
      // do on submit e.g. ajax calls etc. 
     }); 
     } 
    }); 
    return false; 
}); 
0

的Boxy打开iframe中的URL(url = $(e.target).attr('href');)。所以你不能从开始页面(父页面)找到表单。你的代码绑定表单应该在子页面(即Boxy iframe)中。您可以使用您的代码检查iframe网址,url = $(e.target).attr('href');