Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.07.2018, 05:48
Новичок на форуме
Отправить личное сообщение для Passazhir Посмотреть профиль Найти все сообщения от Passazhir
 
Регистрация: 06.07.2018
Сообщений: 2

Как отловить событие onmouseup
Всем привет!
Мне нужно отследить последовательность действий мыши, которые были сделаны над элементом при его перемещении. Сценарий действий пользователя такой: нажали кнопку мыши над элементом – протащили его в сторону – отпустили.
Пробую получить нужный результат вот с таким кодом:
var myElement = document.getElementById("myElement");

myElement.onmousedown = function(event) {
  console.log("нажали");
  myElement.onmousemove = function(event) {
    console.log("перемещаем");
  };
  myElement.onmouseup = function(event) {
    console.log("отпустили");
  };
};
Проблема в том, что событие «отпустили» не возникает.
Подскажите, пожалуйста, что сделал неправильно и как сделать, чтобы отпускание мыши тоже отрабатывало?

Последний раз редактировалось Passazhir, 06.07.2018 в 05:50.
Ответить с цитированием
  #2 (permalink)  
Старый 06.07.2018, 06:24
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

myElement.addEventListener('mousedown', function(event) {
  console.log("нажали");
  myElement.addEventListener('mousemove', function(event) {
    console.log("перемещаем");
  });
  myElement.addEventListener('mouseup', function(event) {
    console.log("отпустили");
  });
});


так попробуйте
Ответить с цитированием
  #3 (permalink)  
Старый 06.07.2018, 09:03
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,217

Сообщение от Passazhir
Подскажите, пожалуйста, что сделал неправильно и как сделать, чтобы отпускание мыши тоже отрабатывало?
Вот целая статья на эту тему...
https://javascript.ru/ui/draganddrop
Ответить с цитированием
  #4 (permalink)  
Старый 06.07.2018, 11:32
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style>
		div{
			display: block;
			position: absolute;
		}
	</style>
</head>
<body>
<div>1ddddddddddddddddddd</div>
<div>1ddddddddddddddddddd</div>
	<script>

[].forEach.call(document.querySelectorAll('div'), function(el){
	el.onmousedown = function(e) {
		console.log("нажали");
		var a = [e.pageX - el.getBoundingClientRect().left, e.pageY - el.getBoundingClientRect().top];
		document.onmousemove = e => {
			console.log("перемещаем");
			el.style.cssText  = 'left:'+(e.pageX-a[0])+'px; top:'+(e.pageY-a[1])+'px'
		};
		el.onmouseup = function() {
			console.log("отпустили");
			document.onmousemove = null;
			el.onmouseup = null;
		};
	};
	el.ondragstart = e => false;
});

	</script>
</body>
</html>
Ответить с цитированием
  #5 (permalink)  
Старый 07.07.2018, 09:21
Новичок на форуме
Отправить личное сообщение для Passazhir Посмотреть профиль Найти все сообщения от Passazhir
 
Регистрация: 06.07.2018
Сообщений: 2

Всем спасибо, дело было в отсутствии
document.ondragstart = function () {
  return false;
};
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как отменить событие onchange при отправке формы? Petja Элементы интерфейса 1 10.04.2014 18:10
как заставить событие при resize сработать с небольшой задержкой один раз? mitiya Общие вопросы Javascript 3 21.10.2012 20:00
Как отловить событие "Enter" в jQuery UI (Menu) ? saturn jQuery 3 10.10.2012 23:15
Store: отловить событие success=false posta ExtJS 1 01.03.2012 11:55
Как назначить событие html-элементу? Jony X Общие вопросы Javascript 15 15.09.2009 20:55