3

メッセージとアラートを表示するために jGrowl を使用しています。使用している日付ピッカーは、.change() 関数を 3 回連続してトリガーしています。つまり、日付/時刻を選択するたびに 3 つのメッセージが表示されます。これを1つだけに制限します。

試してみまし$.jGrowl.defaults.pool = 1;たが、残念ながら、これは実際に単一のメッセージを表示するのではなく、メッセージを積み重ねるだけです。

私が使用しているコードは次のとおりです。現時点では、チェックが行われているにもかかわらず、3 つのメッセージが表示されます。

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

(メッセージが初めて表示されると、.jGrowl-notification div が作成され、メッセージがタイムアウトすると非表示になります)

どんな助けでも大歓迎です、ありがとう

4

1 に答える 1

3

(未テスト)のようなものを試すことができます

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

jGrowlはbeforeOpenとbeforeCloseのreturnステートメントを調べ、falseを返すと続行を停止します。

別の可能な方法は、そのように唸り声がその入力に対して開いているかどうかの記録を保持することです。

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

このように、入力に値を格納して、別のうなり声をキューに入れようとする前に、うなり声が現在開いているかどうかを判断します。

于 2012-06-22T11:16:10.777 に答える