2016-05-17 34 views
1

提交失去價值我有一個提交按鈕的MVC格式:MVC後,當通過JavaScript

<form method="POST" id="submitProject" action="@Url.Action(SubmitProject, "ProjectSummary")"> 
       <button type="submit" name="submitButton" id="submitProject" value="saveToProposed" class="btn btn-primary">Submit Project</button> 
      </form> 

但是,當該按鈕,用戶點擊我想向他們展示一個確認對話框後繼續之前的方法:

$('#submitProject').submit(function (e) { 
     var currentForm = this; 
     e.preventDefault(); 
     bootbox.dialog({ 
      message: "Approve or Reject", 
      title: "Project Approval", 
      buttons: { 
       success: { 
        label: "Approve", 
        className: "btn-success", 
        callback: function() { 
         alert("Approved"); 
         currentForm.submit(); 
        } 
       }, 
       danger: { 
        label: "Reject", 
        className: "btn-danger", 
        callback: function() { 
         alert("Rejected"); 
         currentForm.submit(); 
        } 
       }, 
       main: { 
        label: "Cancel", 
        className: "btn-primary", 
        callback: function() { 
         return true; 
        } 
       } 
      } 
     }); 
    }); 

在我的控制器我試圖陷阱提交按鈕的值是這樣的:

如果我沒有那preventDefault行在那裏我可以看到控制器中的submitButton的值。使用preventDefault時,該值始終爲空。 這是我一直在努力學習MVC的東西。如果我沒有任何客戶端互動,我會很好。但試圖讓js與mvc一起玩就是讓我聽到叮噹聲。我究竟做錯了什麼?

+1

提交按鈕val只有在點擊提交按鈕後,纔會將ue回傳。您將取消默認操作並調用'currentForm.submit();',這將不包含提交按鈕的值。 –

+0

這是有道理的。但我有什麼追索權?我在這個表單上有多個提交按鈕,我需要知道點擊了哪些按鈕,但我也需要確認對話框 – VBAHole

+0

如果您想要處理'.submit()'事件但函數調用'return false'取消它(即如果'取消'按鈕被點擊)或'返回true',讓正常的提交發生(並刪除'e.preventDefault();') –

回答

1

表單只回傳被點擊的提交按鈕的名稱/值對。在您的情況下,您取消按鈕.click()事件,然後調用.submit()函數(即提交不再由點擊觸發,因此其值不會在請求中發送)。

不需要調用e.preventDefault();,調用返回truefalse功能,在您可以使用JavaScript .confirm()函數取消表單提交(即return confirm("...");

function confirmSubmit() 
{ 
    bootbox.dialog({ 
     .... 
     // for the success and danger buttons - return true; 
     // for the main button - return false 

     buttons: { 
      success: { 
       label: "Approve", 
       className: "btn-success", 
       callback: function() { 
        return true; 
       } 
      }, 
      .... 
    }); 
} 

$('#submitProject').submit(function (e) { 
    return confirmSubmit(); 
}); 

邊注以同樣的方式:你的表格只有一個提交按鈕,所以​​的值只會是"saveToProposed"。不確定是否從代碼中省略了它,但我假設你至少有2個提交按鈕。