聆听所有表单提交事件,包括动态添加的表单

时间:2014-05-21 06:22:07

标签: javascript

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

我能想到的唯一方法是使用setTimeout类型调用不断检查页面上的表单。还有更优雅的方法吗?

2 个答案:

答案 0 :(得分:0)

是的,你可以使用jQuery来实现这个

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

答案 1 :(得分: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);