TwitterBootStrap 提交按钮仍然提交表单

Posted

技术标签:

【中文标题】TwitterBootStrap 提交按钮仍然提交表单【英文标题】:TwitterBootStrap Submit Button still submits the form 【发布时间】:2014-04-09 20:54:28 【问题描述】:

我有以下带有 onclick 功能的 Bootstrap 提交按钮。

@html.Bootstrap().SubmitButton().Text("Submit Final").Id("btnSubmitBottom").Style(ButtonStyle.Primary).HtmlAttributes(new  onclick = "return SubmitCheck('Submit Final')", name = "command", value = "Submit Final" ).Disabled(blnButtonsDisabled)

SubmitCheck 有这个调用另一个函数并返回文本值的 ajax 代码。根据该值,我向用户显示一个确认框(true)或一个 Bootbox modal(false)。

               $.ajax(
                    type: "GET",
                    url: "professionalismSubmitFinal",
                    data:  teacherID: CurrentTeacherID ,
                    dataType: "text",
                    error: function (xhr, status, error) 
                    ,
                    success: function (textVal) 
                        if (textVal == 'True') 
                            if (confirm("Are you sure you want to submit this as final?")) 
                                $('#IsPublic').val(true);
                                $('#IsFinal').val(true);
                                submitFormOkay = true;
                                return true;
                            
                            else 
                                $('#IsFinal').val(false);
                                return false;
                             //cancelled from modal
                         else 
                            bootbox.alert("You cannot Submit until this has been Submitted as Final.");
                            return false;
                        
                    
                );

问题是当 Ajax 调用返回 'False' 时,引导箱警报正确显示,但随后表单也提交了。

我做错了什么?我认为onclick = return SubmitCheck 会阻止这种行为?

【问题讨论】:

您的return 语句是从匿名的success 回调函数返回的,而不是从SubmitCheck() 返回的。您需要阻止表单的默认操作,等待 ajax 调用完成,然后重新提交表单,可能在删除处理程序或设置一些标志以让提交通过之后。 @JasonP - 你有一个例子可以告诉我如何做到这一点吗? 【参考方案1】:

也许按钮点击事件上的event.preventDefault();会对你有所帮助

$("#yourButton").click(function(event) 
    event.preventDefault();
);

希望我正确理解了您的问题。

【讨论】:

如果它通过了我所有的检查,那么我该如何提交表单呢?

以上是关于TwitterBootStrap 提交按钮仍然提交表单的主要内容,如果未能解决你的问题,请参考以下文章

最初输入字段不是强制性的,但仍然禁用提交按钮?

在 iOS 设备中单击按钮后 CSS 悬停样式仍然存在

我如何以邮件形式发送表单数据并仍然提交

Twitter Bootstrap 模态表单提交

每次单击按钮时都在提交表单

提交按钮有斜面我无法摆脱