Jquery 确认暂停表单提交,直到按下Ok

Jquery 确认暂停表单提交,直到按下Ok,jquery,asp.net-mvc,jquery-ui,dialog,Jquery,Asp.net Mvc,Jquery Ui,Dialog,我有一个表单,此时会弹出一个确认对话框(是否要继续),它会弹出,但表单会同时发送到我的控制器,无论您点击“是”或“否”,它都会开始处理。如何暂停表单提交,直到显示/选择javascript确认之后 @using (Html.BeginForm("Process", "Home", FormMethod.Post, new { id ="MyForm" })) { @Html.TextBoxFor(m => m.Name); // other form contr

我有一个表单,此时会弹出一个确认对话框(是否要继续),它会弹出,但表单会同时发送到我的控制器,无论您点击“是”或“否”,它都会开始处理。如何暂停表单提交,直到显示/选择javascript确认之后

 @using (Html.BeginForm("Process", "Home", FormMethod.Post, 
 new { id ="MyForm" })) {  
    @Html.TextBoxFor(m => m.Name); 
    // other form controls...
    <input id="Submit" type="submit" value="Apply Changes" /> 
 }

submit
按钮移到表单外部,并将其更改为常规

您的模态“OK”函数为您完成提交,因此您不需要表单中的提交按钮

@using (Html.BeginForm("Process", "Home", FormMethod.Post, 
 new { id ="MyForm" })) {  
    @Html.TextBoxFor(m => m.Name); 
    // other form controls...

 }
<input id="Submit" type="button" value="Apply Changes" /> 
@使用(Html.BeginForm(“Process”、“Home”、FormMethod.Post、,
新的{id=“MyForm”}){
@TextBoxFor(m=>m.Name);
//其他窗体控件。。。
}

提交
按钮移到表单外部,并将其更改为常规的

您的模态“OK”函数为您完成提交,因此您不需要表单中的提交按钮

@using (Html.BeginForm("Process", "Home", FormMethod.Post, 
 new { id ="MyForm" })) {  
    @Html.TextBoxFor(m => m.Name); 
    // other form controls...

 }
<input id="Submit" type="button" value="Apply Changes" /> 
@使用(Html.BeginForm(“Process”、“Home”、FormMethod.Post、,
新的{id=“MyForm”}){
@TextBoxFor(m=>m.Name);
//其他窗体控件。。。
}

您还可以使用表单本身的“onsubmit”事件,如果希望表单实际提交数据或不提交数据,则返回
true
false

您也可以使用“onsubmit”事件并返回
true
false
,如果您希望它实际提交数据或不提交数据。

立即阻止默认操作,然后按下ok按钮触发提交

 $(function () {
    $("#Confirm").dialog({
        autoOpen: false,
        buttons: {
            "Ok": function() {
                $(this).dialog("close");
                $('#MyForm')[0].submit();
            },
            Cancel: function() {
                $(this).dialog("close");
            }
        }
    });

    $("#MyForm").submit(function (e) {
        e.preventDefault();
        $("#Confirm").dialog("open");
    });
});

立即阻止默认操作,然后按ok按钮触发submit

 $(function () {
    $("#Confirm").dialog({
        autoOpen: false,
        buttons: {
            "Ok": function() {
                $(this).dialog("close");
                $('#MyForm')[0].submit();
            },
            Cancel: function() {
                $(this).dialog("close");
            }
        }
    });

    $("#MyForm").submit(function (e) {
        e.preventDefault();
        $("#Confirm").dialog("open");
    });
});

虽然这会起作用,但如果您只是取消了提交按钮的功能,为什么还要使用提交按钮?这并不是取消提交按钮的功能?这样做实际上保留了默认行为,允许通过在输入上按enter键或单击submit按钮来提交表单,这两个按钮都将获得一个确认对话框。如果您改为使用按钮单击来完成工作,则在输入上按enter键将绕过确认对话框。确实如此,您可以调用e.preventDefault(),以取消事件和表单提交。那你就打开模型?为什么不让常规按钮打开模式,如果用户单击“确定”,则使用$(“#MyForm”).submit()提交表单?因为如果不阻止默认操作,按enter键将绕过确认对话框。保留默认的按enter键是此方法的一个很好的参数+1尽管这会起作用,但如果您只是取消了“提交”按钮的功能,为什么会有“提交”按钮?这并不是取消“提交”按钮的功能?这样做实际上保留了默认行为,允许通过在输入上按enter键或单击submit按钮来提交表单,这两个按钮都将获得一个确认对话框。如果您使用按钮单击来完成此工作,按输入上的enter键将绕过确认对话框。确实,您可以调用e.preventDefault()来取消事件和表单的提交。那你就打开模型?为什么不让常规按钮打开模式,如果用户单击“确定”,则使用$(“#MyForm”).submit()提交表单?因为如果不阻止默认操作,按enter键将绕过确认对话框。保留默认的按enter键是此方法的一个很好的参数+1.