Начальная загрузка 4 Ограничение модального закрытия только для текущей функции

#javascript #jquery #twitter-bootstrap

Вопрос:

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

 <script>
    $(document).ready(function (e) {
        $('#confirm-popup-modal').on('show.bs.modal', function () {
            $("#confirm-modal").val("false");
        });
        $('#confirm-popup-modal-yes').off("click").on("click", function (e) {
            e.preventDefault();
            $("#confirm-modal").val("true");
            $('#confirm-popup-modal').modal('hide').data('bs.modal', null);
            return false;
        });
    });
</script>
<input type="hidden" id="confirm-modal" value="false" />
<div id="confirm-popup-modal" class="modal fade" tabindex="-1">
    <div class="modal-dialog modal-dialog-centered" role="document">
        <div class="modal-content">
            <div class="col-sm-12">
                <div class="modal-header">
                    <div class="row">
                        <div class="col-sm-12">
                            <h5 class="modal-title">Confirm Details</h5>
                        </div>
                    </div>
                </div>
                <div class="modal-body">
                    <br />
                    <div class="row">
                        <div class="col-sm-12">
                            <span>
                                <i class="fa fa-exclamation-triangle" aria-hidden="true"></i>
                                Are you sure you want to proceed with this action?
                            </span>
                        </div>
                    </div>
                    <br />
                </div>
                <div class="model-footer">
                    <div class="row">
                        <div class="col-sm-12">
                            <div class="form-group">
                                <div class="clearfix">
                                    <div class="pull-right">
                                        <button id="confirm-popup-modal-yes" class="btn btn-primary">Yes</button>
                                        <a href="#" id="confirm-popup-modal-no" class="btn btn-outline-secondary" data-dismiss="modal">Cancel</a>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
 

Вот как я это называю:

 $("#removeRole").off("click").on("click", function (e) {
    selected = table.rows('.selected').data().toArray();
    if (selected.length > 0) {
        $("#confirm-popup-modal").modal("show");
        e.stopPropagation();
        $("#confirm-popup-modal").on('hidden.bs.modal', function (e) {
            if ($("#confirm-modal").val() == "true") {
                var form_data = selected;
                $.ajax({
                    url: "@Url.Action("Remove", "ApplicationRole", new { area = "Configuration" })",
                    method: "POST",
                    data: JSON.stringify(form_data),
                    contentType: "application/json",
                    success: function (result) {
                        table.draw();
                    },
                    error: function (error) {
                        console.log(error);
                    }
                });
            }
        });
    }
    return false;
});
 

Это еще одна функция на той же странице, которая должна проверить, закрыта ли модальная функция.

 $("#confirm-popup-modal").on('hidden.bs.modal', function (e) {
    if ($("#confirm-modal").val() == "true") {
        $.ajax({
            url: "@Url.Action("Delete", "ApplicationRepository", new { area = "Configuration" })",
            method: "POST",
            data: JSON.stringify($("#SelectedId").val()),
            contentType: "application/json",
            success: function (result) {
                toastr.success("Repository has been deleted");
                $("#SelectedPath").val("\");
                $("#SelectedId").val("");
                $('#tree').jstree(true).refresh();
            },
            error: function (error) {
                console.log(error);
            }
        });
    }
});
 

Я не понимал, что «скрытый.bs.модальный» применяется ко всей странице, и когда мой модальный закрывается, из-за этого активируются несколько URL-адресов.

Есть ли способ определить, был ли модал закрыт, но ограничить его моей текущей функцией?

Комментарии:

1. Так что, похоже, мне каким-то образом удалось ее решить. Вместо того, чтобы использовать .on(‘скрытый.bs.модальный’, я установил его на .one вместо этого