我在实现我的jquery插件时遇到了一些问题。 我需要一个插件,它向我显示一些元素(弹出窗口),当我点击这个元素的边界时隐藏它。
我实现了这个插件。但我在弹出窗口中遇到问题。当我计算点击元素的坐标时,我使用pageX
和pageY
属性。
但是当我尝试使用ENTER键提交表单时,这是一些有趣的事情。当我在提交按钮上按下ENTER浏览器触发“点击”事件时,此按钮的pageX
和pageY
等于0.在event.target
我看到了我的按钮。
当我自己点击提交按钮时 - 一切正常。
问题:如何检测是谁点击了此按钮?用户还是浏览器? (没有任何尖峰,如检测输入上的输入键等)
附加:正如您所看到的here事件不同(点击提交并按ENTER键)。但差异是如此之小......当我们通过ENTER提交表单时,我只看到'detail'属性设置为0。 Detail属性是鼠标事件元素的点击量。
这是检测提交的唯一方法吗?这是对的吗?
答案 0 :(得分:3)
如果您将单击处理程序绑定到单击事件并稍后以编程方式调用单击以及从用户单击调用单击并希望区分处理程序中的两个事件,则可以检查设置的事件的eventObject.originalEvent用户单击但不是.click()调用。
示例:
$('#el').click(function(evt){ if(evt.originalEvent){ //user click } else { // .click() call } });
答案 1 :(得分:2)
如何测试pageX == 0 AND pageY == 0
?
或者甚至更好,假设它是一个表单(它暗示你的帖子),为什么不使用.submit()
而不是.click()
?