【问题标题】:Stop page processing unitl button on dialog clicked停止页面处理,直到单击对话框上的按钮
【发布时间】:2015-12-13 13:13:33
【问题描述】:

当谈到 MVC、Ajax 和 JavaScript 时,我还是个新手。我有一个应用程序,我必须在其中进行更改。现在,当进行更改并保存时,微调器会显示为信息保存和页面加载。保存的代码如下所示:

$('#SaveButton').on('click', function () {
    navParams.isDirty = false;
});

HTML 看起来像这样:

<input type="submit" value="Save" class="btn btn-block btn-primary user-action" name="action:Save" id="SaveButton" />

请注意屏幕上有多个按钮,因此它使用来自How do you handle multiple submit buttons in ASP.NET MVC Framework?的“多按钮”解决方案

添加了以下代码:

 $('#SaveButton').on('click', function () {
    navParams.isDirty = false;
    displaySavePromptMessage();
});
function displaySavePromptMessage() {
    if (isModalOpen == false) {
        bootbox.dialog({
            closeButton: false,
            title: "",
            message: "<strong>Warning: </strong>Changes have been made, ensure corresponding dates have been updated on the screen",
            buttons: {
                success: {
                    label: "Ok",
                    callback: function () {
                        navParams.userAction = false;
                    }
                }
            }

        });
    }
}

现在发生的是单击保存按钮,微调器开始运行,加载对话框,但在单击确定按钮之前,对话框按钮关闭并且微调器停止。更改已保存。 需要发生的是微调器启动,对话框加载并且一切都保持原样,直到用户单击确定。然后处理继续。我不确定如何做到这一点。有什么想法吗?

【问题讨论】:

  • 保存一切的代码在哪里?据我所知,它应该在callback

标签: javascript ajax asp.net-mvc bootbox


【解决方案1】:

您输入了type="submit",单击此按钮时将提交表单。要么把它改成type="button" 或者像@Lesha Ogonkov 说的那样

$('#yourFormID').on('submit', function (e) {
e.preventDefault();//it will stop loading page on form submission
});

在你成功处理函数中的ajax中

$('.myFromID').get(0).submit();

【讨论】:

  • 感谢您的回答!我尝试将类型更改为按钮,它确实保持对话框打开,直到单击确定按钮。但是数据没有保存。
  • 对于另一个选项,我的表单 ID 是 InputForm。我会添加 $('#yourFormID').on('submit', function (e) { e.preventDefault(); 除了 $('#SaveButton').on('click', function () { navParams.isDirty = false; displaySavePromptMessage(); });
【解决方案2】:

基本概念。你需要监听submit 事件并阻止它:

$('.some-form').on('submit', function(submitEvent) {
  submitEvent.preventDefault();
});

然后在您的处理程序中,您需要成功提交表单:

// Inside your success handler
$('.some-form').get(0).submit();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-13
    • 2016-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-30
    相关资源
    最近更新 更多