Jquery plugins 带boxy插件的jquery-通过ajax加载和提交表单

Jquery plugins 带boxy插件的jquery-通过ajax加载和提交表单,jquery-plugins,jquery,Jquery Plugins,Jquery,我正在使用带有Boxy插件的JQuery 当用户单击某个页面上的链接时,我调用Boxy.load将表单加载到弹出窗口中。表单将加载并显示在弹出窗口中,不会出现问题 但是,我无法将表单绑定到提交事件,因为我无法选择表单元素 这是事件处理程序: $('#flag-link a.unflagged').click (function(e) { url = $(e.target).attr('href'); Boxy.load(url, {behaviours:

我正在使用带有Boxy插件的JQuery

当用户单击某个页面上的链接时,我调用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>

我做错了什么

首先是一个小问题,但可能是一个问题源,它应该是id=flag form而不是id=flag form no spaces

第二,你不应该需要r.find。就我所知,在这种情况下,必须使用live方法将元素绑定到事件:

$("#flag-form").live("submit", function(){ ... }
目前,live方法被证明不支持submit事件。不过,我可以用Chrome和FF解决这个问题。另一方面,我无法让它在IE中工作。一种更好的跨浏览器兼容性方法似乎是将表单的submit按钮绑定到click事件

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

我了解到,在行为:函数e{}中声明方法除了使用活动方法外还有效

例如:


Boxy打开URL=$e.target.attr'href';在一个iframe中。因此,您无法从起始页父页中找到表单。绑定表单的代码应该在子页面(即长方体iframe)中。您可以使用您的代码检查iframe URL,URL=$e.target.attr'href'

+1-因为你赢了我。我不得不放弃同样的两点。谢谢。r、 “查找”只是我尝试选择表单的众多方法之一。不幸的是,问题依然存在。
$('#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;
});