Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Проблема с dblclick (https://javascript.ru/forum/misc/36147-problema-s-dblclick.html)

kalko91 05.03.2013 12:29

Проблема с dblclick
 
Добрый день, звените если тема баян но найти схожую не смог.
Существует на странице ссылки (названия товаров). Задача: при двойном клике должно открываться окошко для быстрого редактирования названия. Загвоздка в том что ссылка начинает открываться и прервать загрузку страницы у меня не удается.
Пример ссылки
<a class="lnk_red_u DoubleClickUpdate" style="text-decoration: none;" href="/product-302-alcatel.html" href1="index.php?do=usercp&amp;go=nck&amp;select=request&amp;productid=302">Alcatel</a>

код которым я пытался остановить открытие ссылки
$('.DoubleClickUpdate').bind('dblclick', function(event) {
            window.stop();   
            event.stopImmediatePropagation();
            event.stopPropagation();
            event.preventDefault();
            return false; 
        });

danik.js 05.03.2013 12:45

$('.DoubleClickUpdate').click(function(e){ e.preventDefault() });

kalko91 05.03.2013 12:50

Нужно чтоб при клике открывало ссылку, а при дабл клике было совсем другое действие (открывается окно для быстрого редактирования). Нужно как то в дабл клике сказать браузеру прекратить загрузку.

danik.js 05.03.2013 13:22

дабл клик наступает позже клика, так что так не получится. можно по клику выставлять таймер, давая возможность сделать даблклик.

kalko91 05.03.2013 15:33

все равно не понял я сначала прерываю загрузку (e.preventDefault()), потом если происходит двойной клик загрузку не продолжаю, а если не произошел двойной клик продолжаем загрузку, каким образом продолжить загрузку?

danik.js 05.03.2013 15:37

e.preventDefault() предотвращает действие браузера по умолчанию. Для даблклика по ссылке нет никакого действия. Ваш код делает чуть менее чем ничего.
Остановку загрузки страницы остановить нельзя насколько я знаю.

Deff 06.03.2013 06:17

<script src="http://code.jquery.com/jquery-latest.js"></script>

<a class="lnk_red_u DoubleClickUpdate" style="text-decoration: none;" href="/product-302-alcatel.html" href1="index.php?do=usercp&amp;go=nck&amp;select=request&amp;productid=302">Alcatel</a>


<script>
$('.DoubleClickUpdate').click(function() {
          var b=$(this);b.toggleClass('Nodb');
          setTimeout(function() {b.removeClass('Nodb');},500)
          if(!b.hasClass('Nodb')){clearTimeout(timeout_id0);alert('Тут двойного!')}
          if(b.hasClass('Nodb')){timeout_id0 = setTimeout(function() {alert('Тут функция одиночного клика!')},500)}
          return false; 
        });
</script>

danik.js 06.03.2013 06:45

Ну тогда уж

<a class="lnk_red_u DoubleClickUpdate" style="text-decoration: none;" href="/product-302-alcatel.html" href1="index.php?do=usercp&amp;go=nck&amp;select=request&amp;productid=302">Alcatel</a>
 
<script src="//code.jquery.com/jquery-latest.js"></script>
<script>
$('.DoubleClickUpdate').click(function(e) {
    e.preventDefault();
    if (e.originalEvent.detail == 1) {
        var link = this.href;
        var timerId = setTimeout(function() {
            alert('Переход по ссылке!');
            //window.location = link;
        }, 300);
        $(this).data('timer', timerId);
    } else {
        var timerId = $(this).data('timer');
        clearTimeout(timerId);
        alert ('Даблклик!');
        // делаем дела
    }
});
</script>


IE8 лесом )


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