javascript – 确定触发表单提交事件的元素

我将在前言中说我非常熟悉点击事件,并知道我可以在表单提交按钮上注册点击事件,因为许多其他答案都会解释.我的问题更深层次.

表单可以通过其他方式提交,而不是点击提交:我想当用户按下输入同时专注于输入/选择,甚至按空格键或输入时专注于提交按钮本身…我想成为能够获得对提交表单的元素的引用.

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,它将是用户单击或选中的按钮.

例:
http://codepen.io/anon/pen/KVoJrJ

相关文章

页面搜索关键词突出 // 页面搜索关键词突出 $(function () {...
jQuery实时显示日期、时间 html: <span id=&quot...
jQuery 添加水印 <script src="../../../.....
中文:Sys.WebForms.PageRequestManagerParserErrorExceptio...
1. 用Response.Write方法 代码如下: Response.Write(&q...
Jquery实现按钮点击遮罩加载,处理完后恢复 思路: 1.点击按...