2015-05-26 102 views
1

我試圖阻止當用戶將窗體保存爲草稿時發生所有驗證規則。我的按鈕是阻止窗體mvc上的客戶端窗體驗證

<input id="saveDraft" type="button" value="Save As Draft" class="btn btn-default"/> 

我曾嘗試加入novalidate它,以及formnovalidateclass="cancel"

我只是希望用戶能夠保存草稿沒有填寫所有必填字段,沒有任何重JavaScript刪除所有驗證屬性。

編輯:js文件

 submitButton.addEventListener("click", function() { 
     myDropzone.processQueue();   
     if (myDropzone.files.length == 0) { 
      $('form').validate({ 
       onsubmit: false 
      }); 
      $('form').submit(); 
     }; 
    }); 
+1

只需將'class =「cancel」'添加到提交按鈕將繞過jQuery Validation插件。然而,這是一個有爭議的問題,因爲無論如何,jQuery Validate插件會忽略'type =「按鈕。您的'click'處理程序中的'.submit()'只需將您的按鈕轉換爲提交,即可觸發驗證插件。你也不能調用'.validate()',因爲'unobtrusive-validation'插件已經爲你調用了這個方法。我的建議是完全擺脫你的'click'事件監聽器,將按鈕改爲'type =「submit」'並再次嘗試'class =「cancel」'。 – Sparky

+0

順便說一下,'novalidate'屬性僅用於禁用HTML5瀏覽器驗證。 – Sparky

+0

從我的理解,你說''輸入類型=「按鈕」'應該足以阻止此表單驗證,但是,這不是正在發生的事情,因爲提交被驗證錯誤阻止。 –

回答

0

您可以扎入的onsubmit選項,並停止驗證。 http://jqueryvalidation.org/validate/#onsubmit

<input id="saveDraft" type="button" value="Save As Draft" class="btn btn-default"/> 
<script type="text/javascript> 
    $(input#saveDraft).click(function(event) { 
     event.PreventDefault(); 
     $("form#myFormId").validate({ 
      onsubmit: false 
     }); 
     $("form#myFormId").submit(); 
     //if you are submitting via ajax and want validation when the form is completed/submitted, set the 'onsubmit: true' before exiting this function. 
    }); 
</script> 

請記住,你在做服務器端的任何驗證將不得不與以及處理。

+0

已經有一個服務器端跳過驗證方法。去嘗試這個,不幸的是我有我的「saveDraft」按鈕綁成一堆dropzone.js的東西已經 –

+0

這仍然不適合我。看看我試過的編輯 –