2

我正在使用 JQuery 和引导程序编写一个 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&nbsp;(Optional):
            </td>
        </tr>
        <tr>
            <td>&nbsp;</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>        
}

这在早期工作正常,因为每当用户点击“确定”按钮时,都会调用“ChangeStatus”操作,并且视图正在刷新。

但是现在,在该开发人员进行了一些更改之后,“ChangeStatus”会异步命中两次,从而导致运行时错误。我不确定是什么导致了这个问题。

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

  1. ajax.dialog.custom.js
  2. 引导程序.js
  3. jquery-1.9.1.js
  4. jquery-migrate-1.1.1.js
  5. jquery-ui-1.10.2.js
  6. jquery-unobtrusive-ajax.js
  7. jquery.validate.js
  8. jquery.validate.unobtrusive.js
  9. 现代主义-2.5.3.js
  10. onmediajquery.js
  11. 电子商务网站-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 号文件),但没有帮助。因此,您可以在考虑解决方案时忽略上述文件的任何含义。

有人有什么想法吗?重申在其他开发人员更改某些样式功能之前,相同的代码运行良好。

4

3 回答 3

3

听起来您可能会从脚本中提交一次表单,然后由于浏览器的默认行为而再次提交。尝试将此添加到处理程序的顶部:

event.preventDefault();
于 2013-03-29T13:08:46.077 回答
1

如果提交按钮具有特定的自定义属性,我通过更改 jquery.unobtrusive-ajax.js 文件以跳过异步调用来解决此问题。

于 2013-04-02T13:12:47.470 回答
0

你改变input type="submit"input type="button"

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

于 2013-03-29T13:13:34.680 回答