@Dmi3ii

Как заменить confirm на свое модальное окно?

Добрый день.

Пытаюсь заменить стандартный confirm() на свое модальное окно и не понимаю как их связать. Совсем, вероятно, не могу въехать в замыкания.
Есть post форма, по нажатию кнопки "Согласовать " отображается модальное окно с подтверждением. Если нажали "да" продолжаем работу кнопки submit, иначе останавливаем (return false).

<form method="post">
    <textarea name="comment"></textarea>

    <button class="btn btn-danger" type="submit" name="accept" value="true"
    onclick="return confirm('Продолжить?')">Согласовать (working)</button>
    
    <button class="btn btn-warning" type="submit" name="accept" value="true"
    onclick="showTestConfirm()">Согласовать (broken)</button>
</form>


function showTestConfirm() {
    $('#dataConfirmModal').find('.modal-body').text('Продолжить?');
    $('#dataConfirmModal').modal({show: true});
    $('#dataConfirmOK').click(function () {
        return true; // <-- ошибка
    })
    return false;
}


dataConfirmModal

<div id="dataConfirmModal" class="modal fade" role="dialog">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
                <h4 class="modal-title">Подтверждение</h4>
            </div>
            <div class="modal-body"></div>
            <div class="modal-footer">
                <button type="button" class="btn btn-default" data-dismiss="modal">Закрыть</button>
                <a class="btn btn-primary" id="dataConfirmOK">Принять</a>
            </div>
        </div>
    </div>
</div>



Спасибо за помощь/ссылки.
  • Вопрос задан
  • 1371 просмотр
Пригласить эксперта
Ответы на вопрос 3
@antonsheikin
Frontend Developer
leni_m
@leni_m
ЧупаКобрус
Вы внутри функции вешаете обработчик события "click", что примерно означает "При клике на элемент с id='dataConfirmOK' возвращать true", что звучит как бесполезный код, потому что это true он не в функцию будет возвращать, а просто вникуда:
$('#dataConfirmOK').click(function () {
        return true; // <-- ошибка
})
Ответ написан
ThunderCat
@ThunderCat Куратор тега JavaScript
{PHP, MySql, HTML, JS, CSS} developer
Скажем так: точного аналога вы не добьетесь, так как стандартные модальные окна встроены в функционал движка браузера, прерывая выполнение скрипта и запоминая во внутреннем стеке точку останова, возвращаясь к выполнению с нее в случае подтверждения пользователем. Из скрипта такое сделать не получится. Можно сделать "костыли", вынести в глобальные переменные некоторые данные и использовать их для продолжения работы скрипта с определенного места(например имя функции выполняемой по подтверждению), но я вижу в этом серьезную кривизну реализации. Нечто подобное реализованно в таком плагине. Если это у вас используется в 1 месте, то проще просто вместо ретурн тру вызвать субмит нужной формы.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы