同时抓住用户的右键和左键

时间:2016-08-08 14:56:23

标签: javascript jquery mouseevent

所以我的问题是这个,

我想知道是否有办法检测用户是否正确点击并同时点击左键并在jQuery中执行操作时提交操作。看起来代码只能在鼠标事件中一次检测到一次右键单击或左键单击。

更新

感谢您的回答,我最终决定,当我尝试实现该功能时,该功能对用户来说太过时髦。希望这些答案也能够帮助其他人。

3 个答案:

答案 0 :(得分:2)

您可以创建变量来单独保存每个鼠标按钮的状态,并使用它来确定两个按钮是否都已关闭:

window.isLeftMouseDown = false;
window.isRightMouseDown = false;

$(document).on('mousedown', function(e) {
  if (e.which == 1)
    window.isLeftMouseDown = true;
  else if (e.which == 3)
    window.isRightMouseDown = true;

  if (window.isLeftMouseDown && window.isRightMouseDown) {
    console.log('both down');
  }
});

$(document).on('mouseup', function(e) {
  if (e.which == 1)
    window.isLeftMouseDown = false;
  else if (e.which == 3)
    window.isRightMouseDown = false;
});

https://jsfiddle.net/2j151tpt/

答案 1 :(得分:1)

像这样的东西。它使用ES2015。

let left = false;

document.addEventListener('mousedown', e => {
    if (e.button === 0) {
        left = true;
    } else if (e.button === 2 && left) {
       fireYourFunctionForTwoButtons();
    }
})

document.addEventListener('mouseup', e => {
    if (e.button === 0) {
        left = false;
    }
});

答案 2 :(得分:1)

我的建议是基于两次连续点击之间经过的时间(以毫秒为单位):



$(function () {
  $('#btn').data('last-left-click', 0).on('mousedown contextmenu', function (e) {
    var nowTime = Date.now();
    if (e.which == 1) {
      $(this).data('last-left-click', nowTime);
    }
    if (e.which == 3) {
      // if less then 300 milliseconds....
      if ((nowTime - $(this).data('last-left-click')) < 300) {
        console.log('Both left and right clicked in sequence in less then 300 milliseconds!');
      }
      $(this).data('last-left-click', 0);
    }
  });
});
&#13;
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>

<button id="btn">Click Me</button>
&#13;
&#13;
&#13;