【问题标题】:Detecting where a submit event came from with jQuery使用 jQuery 检测提交事件的来源
【发布时间】:2013-11-13 20:52:42
【问题描述】:

所以,我需要检测用户如何提交表单以生成一些统计信息。他们可以在输入时按 Enter,也可以单击提交按钮。

我尝试将 click 事件绑定到按钮并将 keyup 事件绑定到输入,但是当我按下 enter 时会触发 click 事件。我在其他线程中读到这是新 HTML5 规范或类似规范的一部分。

然后我想将提交事件绑定到表单并在那里检测该事件的起源,但到目前为止我没有运气。这可能吗?

编辑

我想我设法解决了它。我将我的 keyup 事件更改为 keypress,就像 fortegente 所建议的那样,并阻止了 defaultEvents 在触发表单上的提交事件的同时触发。这似乎起到了作用。

【问题讨论】:

  • 为什么用户使用键盘或鼠标(或触摸)提交对您来说真的很重要?
  • 因为运营网站的人想知道这一点,我只是被分配去做的程序员

标签: javascript jquery html forms javascript-events


【解决方案1】:

您可以尝试添加自定义属性。像这样的:

$('form').submit(function(){
   alert($(this).attr('event'));
});

$("button").on('click', function() {
   $("form").prop("event", "click").submit();
});      

$("input").on('keypress', function() {
   if (e.which == 13) {
     $("form").prop("event", "keypress").submit();
   }
});            

【讨论】:

  • 很抱歉,但我看不出这有什么帮助。我的意思是,当我按下 enter 时,仍然会触发 click 事件(不仅如此,它似乎是在 keyup 事件之前触发的),我最终会遇到同样的情况。或者我不会?
  • 我在按钮上设置了click 事件,在输入上设置了keypress 事件。当调用其中一个事件时,我调用submit 表单,在此之前我设置了“事件”属性来标识调用了什么事件。因此我发送表格。在表单submit 处理程序事件中,您可以检查此属性并查看按钮或输入称为提交表单。我希望它会更清楚)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-29
  • 2011-07-05
  • 2013-07-24
  • 2011-11-21
  • 2011-12-11
  • 1970-01-01
  • 2023-03-10
相关资源
最近更新 更多