我在实现我的jquery插件时遇到了一些问题。我需要一个插件,显示一些元素(弹出)和隐藏它时,我点击了这个元素的界限。
我实现了这个插件。但我对弹出窗口中的表单有问题。当我计算单击元素的坐标时,我使用pageX和pageY属性。
但是,当我尝试使用ENTER键提交表单时,这是一些有趣的事情。当我按回车键时,浏览器在提交按钮上触发了'click‘事件,但此按钮的pageX和pageY等于0。在event.target中,我看到了我的按钮。
当我自己点击submit按钮时,一切都是正常的。
问:如何检测谁点击了此按钮?用户还是浏览器?(没有任何尖峰,比如在输入时检测到enter键等)
附加:正如您所看到的,here事件是不同的(当单击submit并按ENTER时)。但差别太小了..。当我们通过回车提交表单时,我只看到'detail‘属性被设置为0。Detail属性是鼠标事件在元素上的点击量。
这是检测提交的唯一方法吗?这是正确的吗?
发布于 2011-10-21 21:13:17
如果要将单击处理程序绑定到单击事件,然后以编程方式以及从用户单击调用单击,并且希望区分处理程序中的两个事件,则可以检查在用户单击而不是.click()调用中设置的eventObject.originalEvent。
示例:
$('#el').click(function(evt){ if(evt.originalEvent){ //user click } else { // .click() call } });
发布于 2011-10-21 20:29:24
测试pageX == 0 AND pageY == 0怎么样?
或者更好的是,假设它是一个表单(从你的帖子中暗示),为什么不使用.submit()而不是.click()
https://stackoverflow.com/questions/7849354
复制相似问题