2014-12-10 3 views
0

Я создал настраиваемые диалоги, такие как Alert и ConfirmDialog с Bootstrap и JQuery.Диалог пользовательского подтверждения не работает должным образом

Вот пример: http://jsfiddle.net/eb71eaya/

Проблема - в обратном вызове я сделать вызов Ajax, а если она возвращает истину, - я показываю оповещение с информацией о состоянии успеха еще - ошибки. Но это предупреждение не отображается, пока запрос делает удаление. (В данном примере я не сделать AJAX запрос, просто показать предупреждение, но это также не работает.)

function getEsrbAlertDialog(title, msg, callBack, obj) { 
    var esrbAlertDialog = $('#esrb-dialog'); 
    if (esrbAlertDialog.length == 0) { 
     esrbAlertDialog = getEsrbDialog(title, msg); 
    } else { 
     $('.modal-title', esrbAlertDialog).html(title); 
     $('.modal-body', esrbAlertDialog).html(msg); 
    } 

    $('.modal-footer div', esrbAlertDialog).empty(); 
    $('.modal-footer div', esrbAlertDialog).append('<button class="btn btn-primary pull-right close-btn">Close</button>'); 

    $('.close-btn', esrbAlertDialog).unbind('click').click(function() { 
     if (typeof callBack === "function") { 
      todo = callBack(obj); 
     } 
     esrbAlertDialog.modal('hide'); 
    }); 

    return esrbAlertDialog; 
}; 

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


UPDATE: Я понимаю логику, как это: Когда пользователь нажимает на «Ok» -Кнопка, диалоговое окно должно быть закрыто. И когда он уже закрыт, пожар события «hidden.bs.modal», который должен выполнить callBack. Но CallBack выполняет перед закрытием диалогового окна.

ответ

1

Эта линия:

esrbConfirmationDialog.modal('hide'); 

скрывается второй диалог.


EDIT: Оба окна используют один и тот же DIV, как есть ссылка:

var esrbAlertDialog = $('#esrb-dialog'); 

Создать раздельные диалоговые один для предупреждения и один для подтверждения.

+0

да, это имеет смысл. Но какие обновления я должен добавить, чтобы закрыть confirmDialog, а затем открыть предупреждение? – demo

+0

, когда у моего callBack не было какого-либо настраиваемого диалога, тогда диалог подтверждения никогда не будет закрыт. – demo

+0

Разве это не нужно: http://jsfiddle.net/eb71eaya/1/? – Jeroen

0

Просто замените эту функцию. Установите значение ниже кода, то есть просто добавьте e.preventDefault();

this.Alert = function (dialogMsg, callBack, obj) { 

    var dlg = getEsrbAlertDialog('Alert', dialogMsg, callBack, obj); 
     e.preventDefault(); 
    dlg.modal('show'); 
}; 
+0

'e' не определено – demo