2013-09-25 1 views
0

Я использую twitter bootstrap и хотел бы знать, есть ли способ узнать, как модальный, который в настоящее время виден, был скрыт.Как узнать, был ли загрузочный модальный спрятан кнопкой или программно

Что происходит, когда пользователь покидает модальный режим (щелкает по черному фону или отбрасывает его с помощью кнопки) после изменения чего-то внутри, другой модальный всплывает и спрашивает его, уверен ли он.

Это все хорошо, но проблема возникает, когда то же самое происходит после того, как программно скрыть модальность как:

$("#modalName").modal('hide'); 

Есть ли способ для меня, чтобы знать, как именно была спрятана модальный?

Спасибо.

Edit:

Andre: Я стараюсь, чтобы перейти к второму решению, но я получаю некоторые странные реакции

Я изменил самозагрузки функцию скрыть включить еще один параметр:

hide: function (e, programatically) { 
    alert(e); 
    alert(programatically); 
    if (programatically) 
    alert('should be seen only from code'); 

И когда я звоню из API, я использую это:

$("#modalName").modal("hide", true) 

Что странно, так это то, что предупреждение «e» показывает мне «истинное» значение, а предупреждение «программно» показывает мне undefiend. Кроме того, при вызове, как это модальный не получает скрытый, и я получаю эту ошибку:

TypeError: Object #<error> has no method 'preventDefault' 
+0

это дополнительное модальное всплывающее окно из twitter bootstrap ?? –

+0

Да, Андре, это модальная модальность, использующая бутстрап. – RonH

+0

как вы его устанавливаете, когда вы удаляете первое всплывающее окно? –

ответ

0

Да, это возможно с помощью event.target.

Что-то похожее на это

document.onclick = function (e) { 
    var tar = e.target; 
    var elementTag = $(tar).get(0).tagName; 
    if (elementTag == "BUTTON") { 
     alert("button clicked"); 
    } else { 
     alert("others"); 
    } 
} 

Вы можете попытаться изменить заводскую класс/идентификатор (если таковые имеются).

Упование вы можете понять.

+0

Спасибо user1671639, я попробовал это, но для меня elementTag всегда является DIV, поэтому я все время получаю предупреждение «другие». – RonH

+0

@RonH Да, это будет так, потому что вы используете бутстрап. В бутстрапе div декорируется как кнопка, модель или т. Д., Поэтому я упомянул, чтобы получить имя класса или идентификатор. Позвольте мне попытаться добавить несколько примеров. – Praveen

+0

Я надеюсь на то, что не включает добавление имен классов и получение информации прямо из объекта e. Хотя, если все остальное не получается, у меня может не быть выбора :) – RonH

0
  1. Поскольку вы используете JQuery, вы можете использовать event.target: (IE использование window.event event.srcElement):

    $(submitButton).click(function(e) { 
        alert(e.target.src); 
    }); 
    
  2. Добавить параметр как programatically .. и установить его показать дополнительные всплывающие окна только тогда, когда он под названием не через: ими программного

    hide: function (e, programatically) { 
        [...] 
        if (!programatically){ 
         // Show additional confirm popup 
        } 
        [...] 
    } 
    

и называют скрытие Progam atically: $ ("# modalName"). modal ('hide', true);

+0

Выглядит неплохо. Позвольте мне попытаться вернуться к вам. – RonH

+0

Я попытался использовать ваше второе решение, и у меня появилось странное поведение. Я подробно объяснил это в моем первоначальном сообщении выше – RonH

0

Вы можете использовать следующий код, чтобы скрыть автозагрузку.

$("#modalName").hide(); 
$(".modal-backdrop").hide(); 
Смежные вопросы