我将在前言中说我非常熟悉点击事件,并知道我可以在表单提交按钮上注册点击事件,因为许多其他答案都会解释.我的问题更深层次.
表单可以通过其他方式提交,而不是点击提交:我想当用户按下输入同时专注于输入/选择,甚至按空格键或输入时专注于提交按钮本身…我想成为能够获得对提交表单的元素的引用.
This answer似乎有希望,但我不确定如何“看到”他提到的价值观.我做了a codepen演示. *编辑:我更新了codepen以反映下面接受的答案.
似乎答案实际上是不准确的,因为当用户提交表单时,浏览器会触发表单中第一次提交的click事件,而不是触发提交的元素之后的第一次提交(至少在我运行时) Chromepen / Firefox / Safari中的Codepen).
为了给出一些必要的上下文,我正在研究Asp.NET site where every page’s content is encapsulated in a monolithic form.我正在向一个异步提交的页脚添加一个电子邮件订阅表单…这意味着我需要对事件进行e.preventDefault()并且如果表单实际上是从顶部的搜索栏或我不知道的表单提交的,那么我想避免意外提交.
解决方法:
您可以使用document.activeElement这将适用于点击,当用户选中按钮并点击回车按钮时.
在表单上监听提交事件,然后在回调内部引用document.activeElement,它将是用户单击或选中的按钮.