Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Запретить срабатывание действия по нажатию (https://javascript.ru/forum/events/39244-zapretit-srabatyvanie-dejjstviya-po-nazhatiyu.html)

supermike 22.06.2013 07:17

Запретить срабатывание действия по нажатию
 
Страница состоит из квадратов DIV'ного типа(воистину дивного!).
На блоки повешен onclick, который перенаправляет пользователя на другой адрес
Так же прикручен JQuery(+UI) плагин позволяющий переносить эти блоки на другое место левой кнопкой мыши (drag'n drop).

А теперь вопрос:
При переносе блоков, а браузерах Opera и Chrome после события не происходит перехода на новый адрес
В браузерах: Firefox и Safari после переноса блока срабатывает событие onclick

Каким образом заблокировать выполнение onclick при переносе блоков? Есть ли такая команда?

И еще вопрос. В браузере IE10 не работает перенос блоков. Это только у меня или так и должно быть?

Пример drag'n drop

ultracomp 22.06.2013 16:46

Вы бы код показали...

supermike 22.06.2013 21:56

Цитата:

Сообщение от ultracomp (Сообщение 257818)
Вы бы код показали...

$(document).ready(function(){
	$(function() {
		$("#list").sortable({ opacity: 0.6, cursor: "move", update: function() {
			var order = $(this).sortable("serialize") + "&action=updateRecordsListings";
			$.post("/index.php", order);
		}
		});
	});
});

используется jquery ui 1.7.1
и собственно jquery

<div class="sites" id="list">

<div id="recordsArray_463" class="box" title="" onmouseout="document.getElementById('2').style.opacity = '0.0';" onmouseover="document.getElementById('2').style.opacity = '0.9';" onclick="location.href='http://allbest.ru';"style="background:black url('./thumbnails/1369328664_2013-05-23-200.jpg');">
    <div class="buttons" id="2">
        <a class="edit_site" href="edit_site.php?id=463">
            <img src="./img/settings3.png" />
        </a>
        <a class="delete_site" href="?category=&deleteSiteId=463">
            <img src="./img/stop_white_2.png"/>
        </a>
    </div>
        <div class="title" style="z-index: 1; position:relative;">Доклады</div>
</div>

</div>

supermike 22.06.2013 22:04

Вложений: 1
Вот сама страница

vadim5june 22.06.2013 22:25

Попробуйте так
по событию dragstart на на елементе присваиваем какой-то переменной v=1;
при клике проверяем если v==1 то return
по событию mouseup на body v=0;

supermike 23.06.2013 08:18

Спасибо за ответ. Смысл понял, начал искать подробности о событиях dragstart и попутно нашел вот такую вещь event.cancelBubble = true; - это в дополнение к вашей идее.
т.к. я почти не знаю JS, а сейчас времени нет разбираться, пока что прицепил это действие на title, чтобы можно было перетягивать элементы за заголовок. Вернусь к решению проблемы позже, как появится время.

vadim5june 23.06.2013 11:23

Цитата:

Сообщение от supermike
нашел вот такую вещь event.cancelBubble = true; - это в дополнение к вашей идее.

event.cancelBubble = true;-это для IE для остальных stopPropagation
обычно так пишут
if(event.stopPropagation)event.stopPropagation();else event.cancelBubble = true;

supermike 23.06.2013 15:31

Цитата:

Сообщение от vadim5june (Сообщение 257937)
event.cancelBubble = true;-это для IE для остальных stopPropagation
обычно так пишут
if(event.stopPropagation)event.stopPropagation();else event.cancelBubble = true;

Спасибо, буду знать. Удивительно, но в FireFox и Safari cancelBubble прокатил.


Часовой пояс GMT +3, время: 10:03.