2011-03-23 16 views
2

我的問題是非常類似於jQuery驗證使用類而不是名稱值1。我想驗證一個複選框組,至少需要檢查一個複選框組。默認情況下,兩個複選框都被選中,但我想確保用戶不會同時取消選中兩個選項。複選框被使用類的複選框組jQuery驗證

​​

jQuery的我已經是:

$("#searchForm").validate({ 
    rules:{ 
      ... 
      ... 
      ... 
    } 
}); 

$(".channel").rules("add", { 
    required: true, 
    minlength: 1 

}); 

然而,這並不完全正常工作。如果我沒有選中這兩個框或僅選中第二個(移動設備),表單將不會提交,並且第一個出現錯誤消息。我究竟做錯了什麼?

回答

3

我不確定我是否會使用jQuery Validation來做這樣的事情,但是如果你只是想確保在任何組中有至少一個已勾選複選框(無論是類還是任何其他屬性),你可以檢查任何適當的選擇器的長度。

if ($('.channel:checked').length == 0) { 
    // validation fails 
} 

編輯

不使用驗證,可以停止通過執行類似提交:

$('form').submit(function(e){ 
    if ($('.channel:checked').length == 0) { 
     // validation fails, so stop submit 
     e.preventDefault(); 
    } 
}); 
+0

感謝您的幫助。我爲表單的其餘部分使用jquery驗證,並使用驗證函數來處理表單提交 - 如果表單通過驗證,它會禁用提交按鈕並提交表單。 – Rachel 2011-03-24 09:28:56

+0

Yeap,這就是我以爲你想要做的事情。查看上面更新的答案;應該做你正在做的事情,而不必處理顯式設置jQuery驗證規則。 – 2011-03-24 09:35:12

+0

+1只是謝謝你 – dino 2011-05-22 09:22:48

1

如果您使用的是jQuery插件驗證,你可以設置你的HTML像這樣:

<form class="commentForm" method="get" action=""> 
    <fieldset> 
     <p> 
      <label for="transportation">Transportation</label> 
      <input class="ccheckbox" type="checkbox" name="transportation" value="Bike">I have a bike <br /> 
      <input class="ccheckbox" type="checkbox" name="transportation" value="Car">I have a car <br /> 
      <input class="ccheckbox" type="checkbox" name="transportation" value="Walk">I walk 
     </p> 
     <p> 
      <input class="submit" type="submit" value="Submit"/> 
     </p> 
    </fieldset> 
</form> 

你s應該將「消息」「規則」選項添加到您的表單驗證中。使用「depends」屬性來設置條件測試,以測試是否存在已選中的框。

 $(".commentForm").validate({ 
      messages: { 
       transportation: { 
        required: "How do you get around?" 
       }, 
      }, 
      rules: { 
       transportation:{ 
        required: { 
         depends: function(element) { 
          return $('input[name="transportation"]:checked').length == 0; 
         } 
        } 
       }    
      } 
     });