【发布时间】:2017-05-16 02:42:12
【问题描述】:
我需要在我的网站上提交表单时进行注册,无论何时何地 - 它可能是动态加载或创建的表单 - 我需要能够知道何时任何表单是关于在页面上提交。由于上述原因,事件侦听器在这里根本不是一个选项。
我在想我还有哪些其他选项,例如,如果我想捕获按钮的点击,我可以在文档中添加一个点击侦听器并检查 event.target 以确定按钮是否已被单击而不向每个特定按钮添加侦听器。我希望我可以对表单提交做同样的事情,但我没有找到合适的事件来监听文档。
想到的另一个解决方案是扩展HTMLFormElement原型并添加一个默认的onclick函数,例如
HTMLFormElement.prototype.onsubmit = function (e) {
console.log(e);
}
不幸的是,这也是不可能的,在不同的浏览器中出现各种错误,例如
- TypeError:在未实现接口 HTMLElement 的对象上调用了“set onsubmit”。
- 未捕获的类型错误:非法调用
我的想法不多了,这不可能吗?
编辑:这个问题显然不是重复的,正如我在我的第一个想法中所描述的那样,确切地说是在建议问题的已接受答案中陈述的内容,我不知道如何在我的案例。
【问题讨论】:
-
为什么不能选择事件监听器?您可以在任何给定页面上获取表单列表。
-
@pvg 因为我如何知道何时将表单添加到页面?我说的是动态内容。
-
这取决于你的代码何时运行?这里的上下文是什么? document.forms 不关心表单是如何添加的,它们仍然存在。
-
@pvg 是的,但是如果一个表单是由 javascript 创建并添加到文档中的,那么我怎么知道该表单已添加,所以我在用户提交之前附加了一个事件侦听器呢?假设我不会成为编写页面逻辑的人。
-
@php_nub_qq 你检查我的答案了吗?
标签: javascript html forms