使用JQuery UI Dialog时,提交操作被击中两次
我正在使用JQuery和bootstrap编写ASP.NET MVC 4应用程序。
在我的网站中有一个模态对话function,直到最近,当另一个开发人员在网站上做了一些与样式相关的更改时,它才能顺利运行。
以下是我在部分视图中编写的代码,我在JQuery对话框中打开它:
@using (Ajax.BeginForm("ChangeStatus", new AjaxOptions { UpdateTargetId = "AboutOrderContainer", HttpMethod = "POST" })) { @Html.HiddenFor(m => m.OrderId) Comments (Optional): @Html.TextAreaFor(m => m.Comments, new { @maxlength = 255, @rows=5 })
}
这在早期工作正常,因为每当用户点击“确定”按钮时,“ChangeStatus”操作被调用,并且视图正在刷新。
但是现在,在开发人员做了一些更改之后,“ChangeStatus”异步命中两次会导致运行时错误。 我不确定是什么导致了这个问题。
以下是加载此对话框时加载的脚本文件:
- ajax.dialog.custom.js
- bootstrap.js
- jQuery的1.9.1.js
- jQuery的迁移,1.1.1.js
- jQuery的UI,1.10.2.js
- jQuery的不显眼,ajax.js
- jquery.validate.js
- jquery.validate.unobtrusive.js
- Modernizr的,2.5.3.js
- onmediajquery.js
- ecommercesite-custom.js
所有脚本文件(ecommercesite-custom.js除外)都是来自JQuery和引导程序站点的库。 以下是ecommercesite-custom.js文件的代码:
$(document).ready(function () { $('input[class*=btn-submit]').click(function (event) { if (($(this).closest('form').valid())) { $(this).attr("disabled", true); $(this).closest('form').submit(); } else { $(this).attr("disabled", false); } }); });
我不确定这里有什么问题。 我已经尝试删除上面的js文件(即第11号),但它没有任何帮助。 因此,在考虑解决方案时,您可以忽略上述文件的任何含义。
任何人都有任何想法? 重申相同的代码工作得非常好,直到其他开发人员改变了一些样式function。
听起来您可能正在从脚本提交表单一次,然后再次由于浏览器的默认行为。 尝试将此添加到处理程序的顶部:
event.preventDefault();
我通过更改jquery.unobtrusive-ajax.js文件来修复此问题,如果提交按钮具有特定的自定义属性,则跳过异步调用。
您将input type="submit"
更改为input type="button"
在这里,您将提交两次表单,一种是默认的表单行为,另一种是脚本