2014-12-05 48 views
0

我有我的MVC表單上的提交按鈕(啓用不顯眼的驗證),其中有取消類:MVC客戶端驗證消息顯示,儘管.cancel類

<input type="submit" name="Go back" value="1" class="cancel" /> 

cancel類允許表單POST即使輸入字段有驗證錯誤。但是,一旦按鈕被點擊,驗證錯誤消息仍會顯示出來,並且在服務器完成往返並重新顯示頁面之前保持可見狀態。

是否有東西烘焙到MVC中,我缺少,或者如果提交元素具有「取消」類,是否需要編寫自己的JS代碼來查找和隱藏所有驗證消息?

+1

沒有理由讓您取消提交按鈕。提交內容會導致您的整個表單被提交,如果您對其進行了驗證,則每次都會失敗。刪除提交,然後使用取消輸入類型按鈕。點擊呼叫您想要在您的控制器中執行的操作。 – Gjohn 2014-12-05 20:02:23

+0

好吧,所以我編輯了這個例子來說明按鈕不一定會執行「取消」功能(無論這可能是什麼意思)。有很多原因可能導致一個按鈕無需驗證輸入即可執行POST操作。例如,我可能會有一個「返回」按鈕,它會返回到多頁嚮導或面試中的上一頁。或者我可能會要求用戶輸入我通過電子郵件發送的驗證碼,並且我需要一個按鈕給用戶,可以單擊以重新發送驗證電子郵件... – 2014-12-06 18:07:50

+0

...的確如此,要驗證輸入可以包含在他們自己的'

'塊中,但是這會使頁面佈局複雜化。 – 2014-12-06 18:09:30

回答

0

Disable client-side validation in MVC 3 "cancel" submit button

人們似乎有彈出驗證問題,有人在那它不是在MVC4和MVC5工作的評論說。

個人意見,我會極大地建議你自己控制這個行爲在表單提交事件和使用ajax發佈表單。

$("MyForm").submit(function(event) { 
    event.preventDefault(); //prevent the default submit 
    if (!$(this).find("input[type=submit]").hasClass("cancel")) 
    { 
     if (!$("form").validate()) 
     { 
      return false; 
     } 
    } 
    $.ajax({ 
     type: "POST", 
     url: url, 
     data: $("MyForm").serialize(), // serializes the form's elements. 
     success: function(data) 
     { 
      //do something 
     } 
    }); 

}); 

我不確定這會阻止驗證彈出提交按鈕單擊。

另一種解決方案是將提交按鈕更改爲常規按鈕,並自行控制驗證和提交表單。