Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.06.2015, 03:44
Новичок на форуме
Отправить личное сообщение для Roman-Fov Посмотреть профиль Найти все сообщения от Roman-Fov
 
Регистрация: 16.06.2015
Сообщений: 3

Скрывается popover если часто изменять значение формы
Всем привет. У меня есть форма с фильтрами. При изменении значений хочу вывести popover с кнопкой "Перейти" которая скрывается через 4 секунды. Проблема проявляется если изменять значения формы чаще чем в 4 секунды. Старый popover исчезает, на долю секунды появляется новый и сразу же исчезает.

Вот мой код:

function debounce(func, wait, immediate) {
    var timeout;
    return function() {
        var context = this, args = arguments;
        var later = function() {
            timeout = null;
            if (!immediate) func.apply(context, args);
        };
        var callNow = immediate && !timeout;
        clearTimeout(timeout);
        timeout = setTimeout(later, wait);
        if (callNow) func.apply(context, args);
    };
};


$('.filter__entity input, .filter__entity select').on('change keypress keydown', debounce(
    function(){
        //$('.filter__entity').popover('hide');
        $filterForm = $('*[data-role=filter-form]');
        action = $filterForm.attr('action');
        data = $filterForm.serialize();
        console.log(data);
        $(this).parents('.filter__entity').popover('destroy');
        $(this).parents('.filter__entity').popover({
            'content': '<a href="' + action + '?' + data + '" class="filter__submit button" style="margin: 1em;">Подобрать</a>',
            'html': true,
            'delay': { 'show': 300, 'hide': 100, },
        }).popover('show');

        // autohiding
        $('.filter__entity').on('shown.bs.popover', function() {
            var $pop = $(this);
            setTimeout(function () {
                $pop.popover('hide');
            }, 4000);
        });
    }, 300)
);

Полагаю, что виной тому autohiding, который срабатывает для второго popover, хотя должен был сработать для первого. Что я делаю не так?
Ответить с цитированием
  #2 (permalink)  
Старый 16.06.2015, 04:40
Новичок на форуме
Отправить личное сообщение для Roman-Fov Посмотреть профиль Найти все сообщения от Roman-Fov
 
Регистрация: 16.06.2015
Сообщений: 3

Как вообще убивается таймаут для элемента?
Ответить с цитированием
  #3 (permalink)  
Старый 16.06.2015, 08:19
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,121

Сообщение от Roman-Fov
Как вообще убивается таймаут для элемента?
Стандартно.
Цитата:
Отмена выполнения

Вы можете отменить выполнение setTimeout при помощи clearTimeout, используя для этого идентификатор таймаута.

var timeout_id = setTimeout(...)
clearTimeout(timeout_id)
http://javascript.ru/setTimeout
Ответить с цитированием
  #4 (permalink)  
Старый 16.06.2015, 12:44
Новичок на форуме
Отправить личное сообщение для Roman-Fov Посмотреть профиль Найти все сообщения от Roman-Fov
 
Регистрация: 16.06.2015
Сообщений: 3

Пробовал вставлять его перед:
var $pop = $(this);
setTimeout(function () {

Но вменяемых результатов это не принесло. Скрывалось раньше чем нужно.
Ответить с цитированием
  #5 (permalink)  
Старый 17.06.2015, 08:22
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,121

Сообщение от Roman-Fov
Пробовал вставлять его перед:
var $pop = $(this);
setTimeout(function () {
Кого "его"?
Ты в состоянии сделать тестовый пример?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу получить значение атрибута src, если оно содержит пробел Hurray Общие вопросы Javascript 2 19.04.2014 19:17
При клике на элемент, изменять значение поля Apelcun77 Общие вопросы Javascript 2 14.02.2014 15:26
checkbox check если значение input djonA Общие вопросы Javascript 8 14.01.2014 06:44
Отображение формы, если видна лишь часть последней Mr. T Общие вопросы Javascript 4 18.03.2012 16:51
Если введеное значение меньше то Tchort Общие вопросы Javascript 12 23.03.2010 11:25