jGrowl - ограничение на одно сообщение

Я использую jGrowl для отображения сообщений и предупреждений. Используемая мной программа выбора даты запускает функцию.change() три раза подряд, то есть каждый раз при выборе даты / времени отображаются три сообщения. ограничить это только одним.

я пробовал $.jGrowl.defaults.pool = 1;но, к сожалению, это просто заставляет сообщения складываться, а не просто отображает одно сообщение.

Вот код, который я использую, на данный момент он по-прежнему отображает 3 сообщения, несмотря на проверку:

if($('.jGrowl-notification').length == 0) {
    jGrowl('message');
} else {
    if ( $('.jGrowl-notification').not(':visible') ) {
        jGrowl('message');
    }
}

(при первом отображении сообщения создается div.jGrowl-messages, затем, когда время ожидания сообщения скрыто)

Любая помощь будет высоко ценится, спасибо

1 ответ

Решение

Может попробовать что-то вроде (не проверено)

jGrowl('message',{beforeOpen: function() {
    if($('.jGrowl-notification').is(':visible')) {
       return false;
   }
 }
});

jGrowl просматривает оператор return из beforeOpen и beforeClose, возвращая false останавливает его продолжение.

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

$('#yourPicker').change(function() {
   if($(this).data('hasExisting') == 0) {
    jGrowl('message',{
        open: function() {
                $('#yourPicker').data('hasExisting',1);
        },
        close: function() {
                $('#yourPicker').data('hasExisting',0);
        }
        });
   }
});

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

Другие вопросы по тегам