0

我正在做一个有一些错误检查的项目。但是,表单每次都想提交,所以我不得不中断提交。这就是我所做的。

@using (Html.BeginForm(null, null, FormMethod.Post, new { id = "order-form" }))
{
...

<input type="submit" name="btnSaveOpv@(item.Id)" value="@T("Admin.Common.Save")" id="btnSaveOpv@(item.Id)" class="adminButton" style="display: none;" onclick="SaveBtn(@item.Id);" />

...

    var originalIssuedQty = 0;

    function SaveBtn(id) {
    var quantity = parseInt($("#pvQuantity" + id).val());
    var issuedQty = parseInt($("#pvIssuedQty" + id).val());
    var stockQty = parseInt($("#hfStockQty" + id).val());
    var availableStockQty = stockQty + parseInt(originalIssuedQty);

    //Issued Quantity cannot exceed Quantity (you can't issue more than requested)
    if (issuedQty > quantity) {
    alert("Issued Quantity cannot exceed Quantity.");
    $("#order-form").submit(function (e) { e.preventDefault(); });
    return false;
    }

    //Make sure Issued Quantity is within Available Stock Quantity
    if (issuedQty > availableStockQty) {
    alert("There is not enough Products in Stock to issue this amount.");
    $("#order-form").submit(function (e) { e.preventDefault(); });
    return false;
    }

    //Present confirmation
    var result = confirm('@T("Admin.Common.AreYouSure")');
    if (!result) {
    $("#order-form").submit(function (e) { e.preventDefault(); });
    return false;
    }
    else {
    $("#order-form").submit(function (e) { this.submit(); });
    //$("#order-form").submit(function (e) { return true; });
    }
    }    
    ...
}

这是问题所在。每当我第一次尝试在不触发任何错误检查的情况下提交时,一切正常。当我触发错误检查时,一切正常。但是,如果我修复错误并尝试再次提交,页面只会刷新。对此的任何想法都会非常有帮助。谢谢。

4

2 回答 2

2

你把事情弄得太复杂了。

这是一个关于如何进行验证以及如何在表单无效时阻止表单提交的基本模板:

$(function() {
  $("#order-form").submit(function (e) {
    var isValid = false;

    // Do your validation here and put the result in the variable isValid

    if ( !isValid ) {
      e.preventDefault(); // If the form is invalid stop the submit, otherwise proceed
    }
  });
});
于 2013-03-21T19:48:52.283 回答
2

每次调用 时$("#order-form").submit(function (e) { whatever });,都会添加一个额外的处理函数。它不会删除您已经添加的处理程序。这可能就是它崩溃的原因。

反复更改submit事件处理程序是一种混乱的方式。相反,您应该有一个处理提交事件的函数,并且该函数应该执行(或调用)错误检查,并preventDefault()在必要时进行(如 ZippyV 建议的那样)。

于 2013-03-21T19:49:48.053 回答