2012-04-06 29 views
1

驗證複選框數組有以下問題。驗證被繞過,已採取樣本Validation Plugin,但它不起作用。jQuery驗證插件和複選框陣列

// valideren formulier 
$('#formulier').validate({ 
    onkeyup: false, 
    onblur: false, 
    showErrors: function(errorMap, errorList) { 
     if(errorList.length > 0) { 
      $("#dcMessage").dcMessage({type: "error", message: errorList[0]['message']}); 
     } 
    }, 
    rules: { 
     gebruikersnaam: { 
      required : true, 
      minlength: 4 
     }, 
     wachtwoord: { 
      required : true, 
      minlength: 8 
     }, 
     wachtwoord2: { 
      required : true, 
      minlength: 8, 
      equalTo: "#wachtwoord" 
     }, 
     email: { 
      email: true 
     }, 
     opdrachtgevers: { 
      required: true, 
      minlength: 1 
     }, 
     groepen: { 
      required: true, 
      minlength: 1 
     } 

    }, 
    messages: { 
     gebruikersnaam: { 
      required : "Gebruikersnaam is verplicht.", 
      minlength: jQuery.format("Gebruikersnaam moet minimaal uit {0} karakters bestaan.") 

     }, 
     wachtwoord: { 
      required : "Wachtwoord is verplicht.", 
      minlength: jQuery.format("Wachtwoord moet minimaal uit {0} karakters bestaan.") 
     }, 
     wachtwoord2: { 
      required : "Herhaal wachtwoord.", 
      minlength: jQuery.format("Wachtwoord moet minstens uit {0} karakters bestaan."), 
      equalTo: "Wachtwoord komt niet overeen." 
     }, 
     email: { 
      email: "Geen geldig e-mailadres." 
     }, 
     opdrachtgevers: "Selecteer minimaal één opdrachtgever.", 
     groepen: "Selecteer minimaal één groep." 
    }, 
    submitHandler: function(form) { 
     // submit het formulier 
     form.submit(); 
    } 
}); 

,這裏是我的表單數據

<div> 
    <div class="groeplabel">Opdrachtgevers<em>*</em></div> 
    <div class="groepinput"> 
    <fieldset> 
    <?php 
    // query; + 0 om op de juiste manier te sorteren 1,2,3,4,5,6,7,8,9,10,11 (+ 0 => converteer naar nummer) 
    $sql = "SELECT opdrachtgever_id, bedrijfsnaam FROM dc_opdrachtgevers WHERE prullenbak = '0' ORDER BY bedrijfsnaam ASC"; 

    // uitvoeren query 
    $result = mysql_query($sql) OR die ("Foutmelding: ".MySQL_errno()." ".MySQL_error()); 

    // opdrachtgevers aanwezig 
    if(mysql_num_rows($result) > 0) { 
     // doorlopen opdrachtgevers 
     while($row = mysql_fetch_assoc($result)) { 
       echo "<div style=\"float: left;\"><input class=\"checkbox cbgroup\" type=\"checkbox\" name=\"opdrachtgevers[]\" id=\"opdrachtgevers-" . $row["opdrachtgever_id"] . "\" value=\"" . $row["opdrachtgever_id"] . "\" /><label class=\"label\" for=\"opdrachtgevers-" . $row["opdrachtgever_id"] . "\">" . $row["bedrijfsnaam"] . "</label></div>\n"; 
     } 
    } 
    ?> 
    </fieldset> 
    </div> 
</div> 
<div class="clearb"></div> 
<div style="margin-top: 10px; padding-bottom: 10px;"> 
    <div class="groeplabel">Groepen<em>*</em></div> 
    <div class="groepinput"> 
    <fieldset> 
     <?php 
     // query; + 0 om op de juiste manier te sorteren 1,2,3,4,5,6,7,8,9,10,11 (+ 0 => converteer naar nummer) 
    $sql = "SELECT groep_id, groep_type, groep_naam FROM dc_groepen WHERE prullenbak = '0' ORDER BY groep_type + 0 ASC, groep_naam ASC"; 

    // uitvoeren query 
    $result = mysql_query($sql) OR die ("Foutmelding: ".MySQL_errno()." ".MySQL_error()); 

    // groepen aanwezig 
    if(mysql_num_rows($result) > 0) { 
     // doorlopen groepen 
     while($row = mysql_fetch_assoc($result)) { 
       echo "<div style=\"float: left;\"><input class=\"checkbox cbgroup\" type=\"checkbox\" name=\"groepen[]\" id=\"groepen-" . $row["groep_id"] . "\" value=\"" . $row["groep_id"] . "\" /><label class=\"label\" for=\"rechten-" . $row["groep_id"] . "\">" . ($row["groep_type"] == "DC" ? "<font color=\"#F00\">Digicarto " . $row["groep_naam"] . "</font>": $row["groep_naam"]) . "</label></div>\n"; 
     } 
    } 
    ?> 
    </fieldset> 
    </div> 

能找到的地方出了問題,有些可以幫助請。

這裏是我的解決方案:

submitHandler: function(form) { 
     // checkboxen niet goed 
     if($(".cb_opdrachtgevers:checked").length == 0) { 
      // opdrachtgevers 
      $("#dcMessage").dcMessage({type: "error", message: "Selecteer minimaal één opdrachtgever."}); 
      return false; 
     } else if($(".cb_groepen:checked").length == 0) { 
      // groepen 
      $("#dcMessage").dcMessage({type: "error", message: "Selecteer minimaal één groep."}); 
      return false; 
     } else { 
      // submit het formulier 
      form.submit(); 
     } 
    } 
+1

這可能會有幫助。前一段時間我正在處理複選框組和驗證。檢查出來http://jsfiddle.net/elclanrs/GFCKA/ – elclanrs 2012-04-06 17:01:16

+0

這看起來像是同樣的問題,可能有幫助:http://stackoverflow.com/questions/1535187/jquery-validate-form-with-multiple-checkboxes-至少一個必須被檢查 – 2012-04-06 23:52:51

+0

已經解決了它,以將驗證添加到submithandler。在代碼中查看主要帖子thanx中的**註釋**。 – mebots 2012-04-10 20:14:24

回答

0

這裏我的解決辦法:

submitHandler: function(form) { 
     // checkboxen niet goed 
     if($(".cb_opdrachtgevers:checked").length == 0) { 
      // opdrachtgevers 
      $("#dcMessage").dcMessage({type: "error", message: "Selecteer minimaal één opdrachtgever."}); 
      return false; 
     } else if($(".cb_groepen:checked").length == 0) { 
      // groepen 
      $("#dcMessage").dcMessage({type: "error", message: "Selecteer minimaal één groep."}); 
      return false; 
     } else { 
      // submit het formulier 
      form.submit(); 
     } 
    }