Javascript 检测浏览器自动单击

Javascript 检测浏览器自动单击,javascript,jquery,javascript-events,Javascript,Jquery,Javascript Events,我在实现jquery插件时遇到了一些问题。 我需要一个插件,它显示我一些元素弹出窗口,并隐藏它,当我点击这个元素的边界 我实现了这个插件。但是我对弹出窗口中的表单有问题。当我计算单击元素的坐标时,我使用pageX和pageY属性 但当我尝试使用ENTER键提交表单时,这是一些有趣的事情。当我按下ENTER键时,浏览器在提交按钮上触发了“单击”事件,但此按钮的pageX和pageY等于0。在event.target中,我看到了我的按钮 当我自己点击提交按钮时,一切都正常 问题:如何检测是谁单击了此

我在实现jquery插件时遇到了一些问题。 我需要一个插件,它显示我一些元素弹出窗口,并隐藏它,当我点击这个元素的边界

我实现了这个插件。但是我对弹出窗口中的表单有问题。当我计算单击元素的坐标时,我使用pageX和pageY属性

但当我尝试使用ENTER键提交表单时,这是一些有趣的事情。当我按下ENTER键时,浏览器在提交按钮上触发了“单击”事件,但此按钮的pageX和pageY等于0。在event.target中,我看到了我的按钮

当我自己点击提交按钮时,一切都正常

问题:如何检测是谁单击了此按钮?用户还是浏览器?没有任何尖峰,如在输入时检测回车键等

附加:正如您所看到的,当单击submit并按ENTER键时,事件是不同的。但差别太小了。。。当我们通过ENTER提交表单时,我只看到“detail”属性设置为0。 Detail属性是鼠标事件在元素上的单击次数

这是检测提交的唯一方法吗?正确吗?

测试pageX==0和pageY==0如何

或者更好的是,假设它是您的帖子中暗示的表单,为什么不使用.submit而不是.click?

测试pageX==0和pageY==0如何


或者更好的是,假设它是文章中暗示的表单,为什么不使用.submit而不是.click?

如果要将一个单击处理程序绑定到一个单击事件,然后通过编程和用户单击调用该单击,并想区分处理程序中的两个事件,您可以检查eventObject.OriginaleEvent,它是在用户单击中设置的,而不是在.click调用中设置的

例如:


$'el'。单击函数EVT{ifevt.originalEvent{//user click}其他{//.click call}

如果要将click处理程序绑定到click事件,然后以编程方式以及从用户click调用click,并希望区分处理程序中的两个事件,则可以检查在用户click中设置的eventObject.OriginaleEvent,而不是在.click调用中设置的eventObject.OriginaleEvent

例如:


$'el'。单击函数EVT{ifevt.originalEvent{//user click}其他{//.click call}

也许你应该使用。提交而不是。点击?什么是尖峰?浏览器如何单击按钮?也许你应该使用。提交而不是。单击?什么是尖峰?浏览器如何单击按钮?我想这是一个尖峰:浏览器单击按钮并将pageX和pageY设置为0,这是确认信息吗?是浏览器默认值吗?@invi不是,但这是一个区域。你真的应该使用.submit。但是在任何提交事件中关闭表单吗?或者类似的东西?>>为什么不使用.submit而不是.click-浏览器生成单击事件@没错。我的意思是,您正试图以点击提交按钮为目标,而提交按钮又反过来提交表单。所以,采取更一般的方法,检查提交,而不是点击。表单并不是无处不在:我真的可以在弹出窗口中使用表单提交事件。但提交表单上的“点击”事件真的很奇怪。从未听说过。我想这是一个尖峰:浏览器点击按钮并将pageX和pageY设置为0,这是确认信息吗?是浏览器默认值吗?@invi不是,但这是一个区域。你真的应该使用.submit。但是在任何提交事件中关闭表单吗?或者类似的东西?>>为什么不使用.submit而不是.click-浏览器生成单击事件@没错。我的意思是,您正试图以点击提交按钮为目标,而提交按钮又反过来提交表单。所以,采取更一般的方法,检查提交,而不是点击。表单并不是无处不在:我真的可以在弹出窗口中使用表单提交事件。但提交表单上的“点击”事件真的很奇怪。从来没听说过这个,很好的方法。我不知道。但在我的情况下,这不是一个决定;好办法。我不知道。但在我的情况下,这不是一个决定;