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