提交表单上的阻止按钮

Posted

技术标签:

【中文标题】提交表单上的阻止按钮【英文标题】:block button on submit form 【发布时间】:2017-04-05 22:42:20 【问题描述】:

尝试使用属性disabled 避免在提交按钮单击时多次提交,但在单击时它只是阻止按钮并且没有任何反应。已尝试将 id 添加到 html.Begin 表单,但单击时会出现服务器应用程序错误,例如:the parameters dictionary contains a null entry for parameter 'id' of non-nullable type System.Int32

@using (Html.BeginForm(MVC.Controller.MethodName(), FormMethod.Post, new  id = "submitFormId" ))


 <button class="btn btn-w-m btn-primary" type="button" id="submitButtonId" value="AddSmth" onclick="return validateForm(event)">
   <i class="fa fa-plus"></i>&nbsp;Add
 </button>

还有js:

 $("#submitButtonId").attr("disabled",true);
 $('#submitFormId').submit();

【问题讨论】:

***.com/questions/926816/… @mplungjan 不适合我 【参考方案1】:

这是不可能的,因为当您按下按钮时重新加载页面,以便删除禁用属性

如果你想设置这个条件,那么使用 ajax 这样页面就不会重新加载,然后按钮禁用也可以工作

【讨论】:

好吧,我不能使用 ajax,因为我在这个视图上上传文件。我知道 ajax 不能处理文件,对吗? web-development-blog.com/archives/…【参考方案2】:

问题是您希望在您的 URL 中有一个 id 参数,但您没有提供一个。例如:

https://example.com/controller/edit/1
                                    ^^ missing

缺少 1(id)。

【讨论】:

这很奇怪,因为提交时从方法控制器收到模型,而不是 id【参考方案3】:

创建了另一种防止多次单击按钮的方法。刚刚补充:

@ Html.EnableClientValidation(); 
@ Html.EnableUnobtrusivejavascript(); 

到视图中,添加全局变量var isSubmited = false;后,通过:

if (isSubmited) e.PreventDefault();

. . .

if ($('#submitFormId').valid()) 
            isSubmited = true;
        

【讨论】:

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

使用按钮单击或表单提交禁用注册按钮,两种方式都会阻止表单提交

阻止模态按钮提交它所在的表单

阻止用户提交表单

阻止表单的默认提交事件

jQuery,阻止表单提交,然后继续

阻止 IE 突出显示表单中的第一个提交按钮