使用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”异步命中两次会导致运行时错误。 我不确定是什么导致了这个问题。

以下是加载此对话框时加载的脚本文件:

  1. ajax.dialog.custom.js
  2. bootstrap.js
  3. jQuery的1.9.1.js
  4. jQuery的迁移,1.1.1.js
  5. jQuery的UI,1.10.2.js
  6. jQuery的不显眼,ajax.js
  7. jquery.validate.js
  8. jquery.validate.unobtrusive.js
  9. Modernizr的,2.5.3.js
  10. onmediajquery.js
  11. 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"

在这里,您将提交两次表单,一种是默认的表单行为,另一种是脚本