2014-05-21 22 views
0

我想倾听页面上所有表单上的表单提交事件,包括任何动态添加的表单(例如,将登录按钮展开为登录表单) 。倾听所有表单提交事件,包括动态添加的表单

我能想到的唯一方法是使用setTimeout类型调用来不断地检查页面上的表单。有没有更优雅的方式来做到这一点?

回答

0

是的,你可以使用jQuery这个

$(document).on("submit", "form", function(e){ 
    //your code 
}) 
0

的形式注册一个监听器提交的所有形式,当更新一次,你应该为所有新的形式或重新注册一个监听器页面的内容再再次初始化您的代码关于您的页面。请看下面的例子:

var forms = document.getElementsByTagName('form'); 

for (var i = 0; i < forms.length; i++) { 
    // forms[i].removeEventListener('submit',functionName);     
    forms[i].addEventListener("submit", function(e) { 
      /* your work */ 
      // this.removeEventListener('submit',arguments.callee); 
    }); 
} 

然后每次添加一个新的表单元素或更新网页内容,你可以再次运行代码或附加到新创建的窗体只是听众。

如果您决定

  1. 运行页面,你应该先删除以前的连接监听功能的代码保持功能的参考的变量之前将其固定,并使用引用删除

    forms[i].removeEventListener('submit',referenceToFunction);

  2. 在侦听器函数内部,使用以下行删除前一个。 this.removeEventListener('submit',arguments.callee);