SimpleModal подтвердить перед закрытием диалога

Я использую SimpleModal ( http://www.ericmmartin.com/projects/simplemodal/), и у меня есть форма, которая отображается в диалоговом окне. То, что я хочу сделать, - это иметь возможность получать подтверждение каждый раз, когда пользователь пытается закрыть диалоговое окно (либо нажатием клавиши "Закрыть", либо щелкнув по значку закрытия), и спрашивает их, действительно ли они хотят закрыть его, не сохраняя данные формы., Я попробовал следующее:

onClose: function (dialog) {
    if (confirm('Are you sure you want to close without saving?')) {
        $.modal.close();
    }
}

Но это срабатывает только один раз. Если вы нажмете "Отмена", то не сможете снова закрыться позже, что имеет смысл. У кого-нибудь есть предложение или решение? Любая помощь будет принята с благодарностью.:)

3 ответа

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

Просто перед тем, как позвонить на ваш пользовательский обратный вызов onClose это называется это:

s.unbindEvents();

Который фактически говорит: "Эта коробка закрывается, нравится вам это или нет". Это не похоже на обычный обратный вызов, который вы можете отменить.

Я бы порекомендовал вместо этого использовать JQuery UI Dialog, который вы найдете очень простым для реализации этой функциональности, используя их beforeclose Перезвоните. Вы бы просто использовали:

beforeclose: function(){ 
    return confirm('Are you sure you want to close without saving?')
}

Я получил эту работу, используя что-то вроде того, что пытался Джерон, но также связывал события:

onClose: function (dialog) {
    if (confirm('Are you sure you want to close without saving?')) {
        $.modal.close();
    }else{
        this.occb = false;
        this.bindEvents();
    }
}

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

Я также посмотрел на источник и когда onclosed событие выполняется occb флаг включен.

Что вы можете попробовать (я не пробовал) это переопределить это occb как это передается this переменная:

onClose: function (dialog) {
    if (confirm('Are you sure you want to close without saving?')) {
        $.modal.close();
    }else{
        this.occb = false;
    }
}

Надеюсь это поможет.

Другие вопросы по тегам