jQuery Validation插件和Checkbox数组

时间:2012-04-06 16:57:09

标签: php jquery forms validation

验证复选框数组有以下问题。绕过验证,取样Validation Plugin,但它不起作用。

// 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 个答案:

答案 0 :(得分: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(); 
        } 
    }