所以我的问题是这个,
我想知道是否有办法检测用户是否正确点击并同时点击左键并在jQuery中执行操作时提交操作。看起来代码只能在鼠标事件中一次检测到一次右键单击或左键单击。
更新
感谢您的回答,我最终决定,当我尝试实现该功能时,该功能对用户来说太过时髦。希望这些答案也能够帮助其他人。
答案 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;
});
答案 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;