2010-07-07 83 views
0

我使用jquery驗證器插件。我需要在某些條件下驗證某個字段。我們如何應用?jquery驗證插件:驗證一些條件

我有一個表格,用戶選擇一個國家..然後用戶創建分支, 現在我想驗證,如果用戶不選擇一個縣,然後提示選擇國家,如果用戶選擇一個國家然後提示創建至少一個分支。

如果用戶創建的任何分支我做什麼就

再有就是統計部門的隱藏字段。但是該字段在創建分支之後被填充,在此之前(在頁面加載時)沒有值,所以如果我爲該隱藏字段進行驗證,那麼它總是返回true。我應該怎麼辦

這裏是代碼片段我用,但我知道必須有一個更好的方式來處理所有above..please建議我優化的方式來做到這一點

<script type="text/javascript"> 
jQuery.metadata.setType("attr", "validate"); 

jQuery('#createForm').submit(function(){ 
     if(jQuery("#hasbranch").val()== 0){ 
      jQuery(".brancherror").html('Atleast one branch is necessary'); 
      return false; 
     } 
    }); 

var validator=jQuery("#createForm").validate({ 
       rules: { list of rules}, 
       messgae : { list of messages },         
}); 
</script> 

<form name="createForm" id="createForm"> 
<table> 
<tr> 
     <td>Select Country :</td> 
     <td > 
     <select name="country_id" id="country" class="selectbox" onchange="return showBranch();"  title="Please select country" validate="required:true" > 
    <option value="" >Select Country </option> 
    <?php foreach($this->country as $key => $country) { ?> 
    <option value="<?php echo $country->id; ?>"<?php if ($country->id == $this->ad_data['country_id']) {?> selected="selected" <?php } ?> > <?php echo $country->name; ?></option> 
    <?php } // end of foreach ?> 
     </select> 
     </td> 
    </tr> 
    <tr> 
     <td> //Here is link to add branch (via iframe) </td> 
    </tr>  
    </table> 
    <input type="hidden" value="<?php echo count($_SESSION['branches'])? 1: 0 ;?> name="hasbranch" id="hasbranch" /> 
    </form> 

回答

2

你可以使用depends上規則應用條件驗證:

rules: { 
    someField: { 
     required: true, 
     email: { 
      depends: function(element) { 
       // require someField to be a valid email only if the user checked 
       // to be contacted by email 
       return $("#contactform_email:checked"); 
      } 
     } 
    } 
}