2013-09-26 66 views
1

我想驗證有多個條件的字段。我有一個單一的條件驗證工作,但我不知道如何去添加addl條件。這是我到目前爲止有:jquery驗證多個條件

priceEstimate: { 
      required: function() { 
      return $('#jobType').val() != '8'; 
      } 
     } 

我還需要確保#jobType的值不等於「9」或「10」要麼。我嘗試使用一個或運算符,而這似乎並沒有伎倆。

任何幫助將不勝感激。

+0

不用爲'required'規則編寫複雜函數,而是使用'addMethod'方法創建一個全新的自定義方法。 – Sparky

回答

2
priceEstimate: { 
      required: function() { 
      var jobType = $('#jobType').val(); 
      if (jobType < '8' && jobType > 10) 
      { 
       return true; 
      }else{ 
       return false; 
      } 
      } 
     } 

有可能更簡單的方法來寫它......但這會做雅。 http://www.w3schools.com/js/js_comparisons.asp


迴應傑里米的評論:

priceEstimate: { 
    required: function() 
    { 
     var jobType = Number($('#jobType').val()); 
     var _return = true; 
     switch (true) 
     { 
      case (jobType <= 1): 
      case (jobType >= 8 && jobType <= 10): 
         _return = false;   
       break; 
     } 
     return _return; 
    } 
} 

好了,我們在這裏做一個級聯交換機。表達式設置爲true,所以它會運行每個案例......然後我們將邏輯放在每個個案中。

我們知道我們不想要1或0,所以如果它等於1或更低,在這種情況下沒有中斷,它就會被設置爲false,它將簡單地運行到下一個案例,並且甚至進一步驗證,所以你會想要儘量保持這些情況下,至少> - 如果沒有爲了你自己的理智,最大>大聲笑。

此外,我使用Number()來充實輸入中的數值,以防萬一,這樣我們也不必使用引號('10')來封裝所有的檢查,重新對待像實際的數字,而不僅僅是表示,可能會被翻譯成會使你的努力邏輯失敗的東西。

+0

我有一個值爲'0'的jobType和另一個值爲'1'的不使用此方法驗證的jobType。所有其他jobTypes(2-7)工作得很好。任何想法你會如何解決這個問題? – Jeremy

+0

我欣賞這個更新,但是,這會導致與原始方法相同的行爲。除了jobType 0和jobType 1以外,一切都正常工作。 – Jeremy

+0

當我下班回家時,我會進一步測試它......今天很忙碌的一天:D。只有大約和小時左大聲笑。 – 2013-09-27 20:20:16