2015-06-26 4 views
0

Есть ли способ ограничить количество срабатываний диалогового окна до тех пор, пока страница не будет перезагружена? В частности, я использую виджет диалога jQuery UI Dialog. Я надеялся, что там был какой-то способ подачи этого в настройках виджета - я предполагаю, что это будет выглядеть какjQuery-UI Dialog Widget - ограничение количества раз, разрешенного для запуска

// div#notice is the name of the dialog element, 
// with style="display:none" by default 
$("#notice").dialog({ 
    dialogClass: "noticeDialog", 
     buttons: [{ 
      text: "OK", 
      click: function() { 
       $(this).dialog("close"); 
      } 
     }], 
     repeat: 1 // A Dialog option equivalent to this does not exist to 
        // my knowledge 
} 

Единственный способ, которым я могу думать о достижении этой цели является для диалогового окна .remove() сам из DOM внутри функции обратного вызова опции «закрыть». Что-то вроде:

$(".selector").dialog({ 
    close: function() { 
     $(#"dialogBox").remove(); 
    } 
}); 

У меня такое чувство, что это не будет работать, как надеемся, однако. Какие существуют лучшие варианты? Если есть способ установить тайм-аут в диалоговом окне, это также будет полезно и/или выполнить аналогичный эффект.

+0

http://api.jqueryui.com/dialog/#method-destroy – j08691

+0

Я ничего не могу придумать. Поместите счетчик в код, который вызывает диалог. – Barmar

ответ

0

Сделайте это в коде, который вызывает диалог. Во-первых, инициализировать счетчик:

var dialog_counter = 0; 
var dialog_limit = 5; 

Затем в коде, который отображает диалоговое, инкремент и проверить:

if (++dialog_counter <= dialog_limit) { 
    $("#notice").dialog({ 
     ... 
    }); 
} 
+0

Мне нравится идея использования счетчика, но на самом деле это не работает в этом случае, потому что код, запускающий диалог, содержится внутри цикла else-if внутри другой функции обратного вызова, то есть $ (селектор) .blur (функция() { если (условие) {// некоторый код } еще если (условие) { $ ("# извещение") диалоговые ({ // Инициализационные опции });. } }); –

+0

Это не имеет значения. Просто убедитесь, что переменная счетчика находится в области содержимого всех функций, запускающих диалог. – Barmar

+0

Противоположная идея сработала. Счетчик должен быть инициализирован вне функции .blur(), затем добавить условие «&& if counter === 0» в условие «if» внутри обратного вызова .blur(). Благодаря! –

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

  • Нет связанных вопросов^_^