2012-06-01 89 views
0

我有我的形式的以下部分:jQuery的驗證器來驗證默認選擇爲無效

<input type="checkbox" class="hide" id="additional-webinar" name="additional-webinar-check" value="additional-webinar-box"> 
<label class="hide" for="additional-webinar">Include Additional Webinar</label> 

<div class="hide" id="additional-webinar-box" style="display:none;"> 
     <label class="title">Select Additional Webinar</label> 
     <select name="additionalWebinarSelection"> 
      <option value="0" selected="">Please Select</option> 
      <option value="173">Del All test(Elite Options Mastery)</option> 
      <option value="171">Glob Test(Elite Futures Mastery)</option><option value="169">Test 2(Elite Futures Mastery)</option> 
      <option value="167">Test(Elite Futures Mastery)</option><option value="164">Test(Elite Futures Mastery)</option> 
      <option value="162">New Min TEst(Elite Futures Mastery)</option><option value="160">Min Height Test(Elite Options Mastery)</option> 
      <option value="158">Title Yo(Elite Options Mastery)</option><option value="156">Title(Options Made Easy)</option> 
      <option value="96">TT Test(Daily Wealth Report)</option> 
     </select> 
</div> 

股利獲取真實顯示,如果該複選框被選中,否則它是隱藏的。

我有以下的驗證碼就可以了

jQuery('#validate').click(function(){ 

    jQuery("form").validate({ 

     rules: { 
      additionalWebinar: { 
       required: { 
        depends: function() { 
         return jQuery('input[name=additional-webinar-check]').is(":checked") 
        } 
       } 
      } 
     } 
    }) 
}); 

然而,隨着select元素將始終有一個選擇的選項總是這個評估爲真。我如何讓它在默認情況下返回false。我曾嘗試以下方法:

depends: function() { 
    if(jQuery('input[name=additional-webinar-check]').is(":checked")) { 
     var input = jQuery('select[name=additionalWebinarSelection]').val(); 

     if (input == 0) { 
      alert(input); 
      return false; 
     } else { 
      return true; 
     } 
    } 
} 

但無濟於事。

但是也有一些通過調用驗證功能(我故意迫使它的調用)

這不會觸發控制檯錯誤是所有正在使用Official jQuery Validator jQuery Plugin

因此,如何是一個WordPress的博客做這樣做和/或我做錯了什麼?

+0

您能告訴我們「depend()」的調用部分嗎?你怎麼稱呼這個功能? – naota

+0

將其他信息添加到帖子 – Joshua

回答

1

Josha,

據我所知,驗證API要求該規則應具備的元素ID。您需要添加「additionalWebinar」作爲select元素的id。

jQuery('#validate').click(function(){ 
jQuery("form").validate({ 

    rules: { 
     additionalWebinar: { // this has to be an Id of an Element 
      required: { 
       depends: function() { 
        return jQuery('input[name=additional-webinar-check]').is(":checked") 
       } 
      } 
     } 
    } 
}) 
}); 
+0

它實際上是必須匹配的元素的**名稱**。此外,如果將「請選擇」選項的值更改爲「無」(即,「值=」「'),則」required「選擇框的默認驗證將起作用。 – Ryley

+0

謝謝你,這是我調用錯誤的選擇器的事實,我知道這太愚蠢了,因爲看太久而看不到這些小東西。我還實施了@Ryley的解決方案,因此可以將這兩者結合起來。 – Joshua