2011-10-28 60 views
0

我想使用jQuery驗證器做一些條件驗證。MVC3有條件的jQuery驗證

我有在JavaScript嚮導移動到下一步驟時,調用validate方法:

var validator = $("form").validate(); 
var anyError = false; 

step.find("input").each(function() { 
    if (!validator.element(this)) { 
     // validate every input 
     anyError = true; 
    } 
}); 

if (anyError) { 
    return false; 
} 

所有工作正常時,我有模型上的[必需]屬性。

不過,我有這樣的場景:

  • 我有一個下拉一個選擇:電子郵件或FTP
  • 當電子郵件選項被選中我想說明的電子郵件地址字段並添加驗證
  • 當選擇Ftp選項時,我不想驗證電子郵件地址

以下是電子郵件地址的html代碼段。

<div class="email-address" style="display: none;"> 
    <label class="fullwidth" for="EmailAddress">Email Address</label> 
    @Html.TextBoxFor(m => m.EmailAddress, new { @class = "longtext" }) 
    <div id="email-validation"> 
    </div> 

我已經試過各種但下一步按鈕驗證例程始終認爲形式是有效的。例如。

$("form").validate({ 
    errorLabelContainer: '#email-validation', 
    rules: { 
     EmailAddress: { 
      required: true 
     } 
    }, 
    messages: { 
     EmailAddress: "Please enter an email address" 
    } 
}); 

任何幫助表示讚賞。

+0

檢查此文章: http://blogs.msdn.com/b/simonince/archive/2011/09/29/mvc-validationtookit-alpha-release-conditional-validation-with-mvc-3.aspx 我有同樣的問題,驗證字段的下拉列表,這篇文章非常有用。 – Gradile

+0

謝謝 - 會嘗試 – Matt

回答

0

我不確定,但我敢肯定,你不能使用標準的jQuery的驗證與MVC3客戶端驗證結合..你必須做一個或另一個。

更具體地說,MCV3客戶端驗證適用於自己使用的jquery驗證,這與使用jquery驗證獨立相沖突。

+0

不,你錯了。 ASP.NET MVC附帶額外的小型庫,鏈接mvc驗證系統與jQuery驗證 – archil

+0

@archil - 是的,我知道。我特別說過。問題是你不能寫通用的jQuery驗證*和*在同一頁面中使用MVC jQuery適配器。 –

+0

抱歉,但這不是真的:)。建在庫中的mvc只是調用jquery-validation插件方法。他們不衝突。你可以使用jQuery驗證插件中你喜歡的任何方法。 – archil

0

我會使用disabled輸入不參與驗證的事實。添加所需的服務器端,但只是禁用和隱藏EmailAddress時選擇FTP。

+0

嗨,我'我試過禁用這些字段,驗證仍然失敗。下面是調用驗證器的代碼:var validator = $(「form」)。validate(); var anyError = false; $ step.find(「input」)。each(function(){if(!validator.element(this)){anyError = true;}});如果(anyError)返回false; – Matt