我正在使用JQuery和bootstrap编写ASP.NET MVC 4应用程序。
我的网站中有一个模式对话功能,直到最近,当另一个开发人员在网站上做了一些与样式相关的更改时,它才能顺利运行。
以下是我在部分视图中编写的代码,我在JQuery对话框中打开它:
@using (Ajax.BeginForm("ChangeStatus",
new AjaxOptions { UpdateTargetId = "AboutOrderContainer", HttpMethod = "POST" }))
{
@Html.HiddenFor(m => m.OrderId)
<table class="row-fluid">
<tr>
<td></td>
</tr>
<tr>
<td>
Comments (Optional):
</td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td>
@Html.TextAreaFor(m => m.Comments, new { @maxlength = 255, @rows=5 })
</td>
</tr>
<tr>
<td>
<center>
<input type="submit" title="OK" value="OK" class="btn" />
</center>
</td>
</tr>
</table>
}
这是之前的工作正常,因为每当用户点击&#34; OK&#34;按下&#34; ChangeStatus&#34;动作被调用,视图得到了刷新。
但是现在,在开发人员做了一些改变之后,&#34; ChangeStatus&#34;异步命中两次会导致运行时错误。我不确定是什么导致了这个问题。
以下是加载此对话框时加载的脚本文件:
所有脚本文件(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号),但它没有任何帮助。因此,在考虑解决方案时,您可以忽略上述文件的任何含义。
任何人都有任何想法? 重申相同的代码工作得非常好,直到其他开发人员改变了一些样式功能。
答案 0 :(得分:3)
听起来您可能正在从脚本提交表单一次,然后再次由于浏览器的默认行为。尝试将此添加到处理程序的顶部:
event.preventDefault();
答案 1 :(得分:1)
我通过更改jquery.unobtrusive-ajax.js文件来修复此问题,如果提交按钮具有特定的自定义属性,则跳过异步调用。
答案 2 :(得分:0)
您将input type="submit"
更改为input type="button"
在这里,您要提交两次表单,一种是默认的表单行为,另一种是脚本