2013-03-21 2 views
0

일부 오류 검사가있는 프로젝트에서 작업하고 있습니다. 그러나 양식은 제출할 때마다 제출해야하므로 제출을 중단해야했습니다. 여기 내가 한 일이있다.양식을 제출하지 않으면 오류 검사가 중단됩니다.

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

<input type="submit" name="[email protected](item.Id)" value="@T("Admin.Common.Save")" id="[email protected](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; }); 
    } 
    }  
    ... 
} 

여기가 문제입니다. 내 오류 검사를 실행하지 않고 처음 제출할 때마다 문제가 해결됩니다. 오류 검사를 실행하면 문제가 해결됩니다. 그러나 오류를 수정하고 다시 제출하려고하면 페이지가 새로 고쳐집니다. 이것에 대한 아이디어는 매우 도움이 될 것입니다. 감사.

+0

Firefox 개발자 도구 또는 firebug로 디버깅 해 보셨습니까? –

+0

귀하의 양식을 보여주십시오 – Huangism

+0

나는 Fabio 수 있기를 바랍니다. 불행히도, 내가 일하는 그룹 때문에, 우리는 IE8의 진절머리 나는 개발자 도구에만 매달려 있습니다. 내가 본 것에서 버그가 나옵니다. – IyaTaisho

답변

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 
    } 
    }); 
}); 
+0

완벽! 도와 주셔서 감사합니다. – IyaTaisho

2

당신이 $("#order-form").submit(function (e) { whatever }); 호출 할 때마다, 당신은 추가 핸들러 함수를 추가

이것은 당신이 유효하지 때 제출에서 양식을 중지 어떻게 검증 할 방법에 대한 기본 템플릿입니다. 이미 추가 한 핸들러는 제거되지 않습니다. 이것은 아마도 그것이 깨지는 이유 일 것입니다.

submit 이벤트 핸들러를 반복적으로 변경하는 것은 그 일을 지저분한 방법입니다. 대신 제출 이벤트를 처리하는 단일 함수가 있어야하며 해당 함수는 오류 검사를 수행하거나 호출해야하며 필요한 경우 (ZippyV가 제안하는 것처럼) preventDefault()을 호출해야합니다.

+0

도움에 감사드립니다. 내가 너를 읽은 후에 나는 너를 완전히 이해했다. 다시 한번 감사드립니다. – IyaTaisho

관련 문제