Мне нужно иметь некоторые функциональные возможности в моем веб-приложении, где определенное действие происходит, когда пользователь нажимает и удерживает элемент. Думайте об этом как о долгом нажатии на Android.
У меня есть мой div:
<div id="myDiv"
onmousedown="press()"
onmouseup="cancel()"
onmouseout="cancel()"
onmousemove="cancel()">Long Click Me</div>
и мой JavaScript:
var down = false;
function press()
{
down = true;
setTimeout(function() { action(); }, 1500);
}
function cancel()
{
down = false; // this doesn't happen when user moves off div while holding mouse down!
}
function action()
{
if (!down)
return; // if the flag is FALSE then do nothing.
alert("Success!");
down = false;
}
Это работает, пока все, что я делаю, это нажимаю и удерживаю элемент. У меня есть события onmouseout
и onmousemove
для вызова cancel (), потому что я хочу, чтобы у пользователя была возможность изменить свое мнение и убрать мышь с элемента перед началом действия ().
К сожалению, мой код этого не делает.
На самом деле, если пользователь нажимает на мгновение вниз, убирает мышь с div и отпускает до через 1,5 секунды, тогда action () не вылетит, как ожидалось.
Редактировать : Спасибо всем за ваш вклад, но оказывается, я просто немного особый и не увидел, что я забыл заглавную букву в своем HTML в моем onmouseout. Пример кода, который я привел выше, должен работать точно так, как ожидалось.