2012-06-13 7 views
3

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

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

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

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

(в первый раз появляется сообщение, создаются ДИВО .jGrowl-уведомление , а затем, когда раз сообщение из него скрыт)

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

+0

Можете ли вы собрать демо на jsfiddle.net? Кроме того, какой datepicker вы используете? – will

+1

Глядя на код jGrowl, элемент, переданный в startup, имеет атрибут data(), содержащий некоторый материал, и массив уведомлений находится там: '$ (e) .data ('jGrowl.instance'). Уведомления. стоит взглянуть на это, чтобы определить, уже ли оповещения уже поставлены в очередь? – Tallmaris

ответ

3

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

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

jGrowl рассматривает инструкцию return beforeOpen и beforeClose, возвращая ложные остановки.

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

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

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

+0

@Nick Любая обратная связь об этом ожерелье? – AbstractChaos

+0

Привет, очень жаль позднего ответа - это выглядит идеально! Большое вам спасибо за то, что потратили время на это, я использую моно тему (http://www.webstuffshare.com/2010/01/jgrowl-theme-mono-basic/), поэтому у меня не было возможности реализовать изменения, так как это может потребовать немного возиться, и я довольно занят на работе, но ваша общая идея/решение на месте, так что еще раз, спасибо! :) – Nick

Смежные вопросы