2010-10-12 6 views
5

Ich habe ein Formular mit JQuery Validierung Plugin.JQuery Validierung: Wie Sie Elemente in mehreren wählen

<label> 
    <input name="Distribution[]" type="checkbox" id="dist_europe" class="required minlength:1" value="Europe" /> Europe 
</label> 

<select name="Europe[]" size="5" multiple id="Europe"> 
    <option value='Albania'>Albania</option> 
    <option value='Andorra'>Andorra</option> 
    <option value='Austria'>Austria</option> 
</select> 

Ich muss 'bedingte' Validierung durchführen. z. Wenn das Kontrollkästchen aktiviert ist, vergewissern Sie sich, dass mindestens ein Element in "Option auswählen" ausgewählt ist.

$(document).ready(function(){ 
    $("#commentForm").validate({ 
     rules: { 
       Europe: { 
       required: "#dist_europe:checked", 
       minlength: 1 
       } 
     }, 
     messages: { 
     Europe: "Please select at least 1 country" 
     } 
    } 
}) 

Das Problem, das ich mit Blick auf bin jetzt ist:

  1. Ich bin in der Lage zu erkennen, dass das Kontrollkästchen aktiviert ist.
  2. Ich bin jedoch nicht in der Lage, das Array 'Select' zu überprüfen, Europa []
  3. Wenn ich das Array entfernen, und nennen Sie es Europa, kann ich erkennen, dass mindestens ein Element ausgewählt ist. Dies bedeutet jedoch, dass das Backend-PHP-Skript nicht in der Lage ist, die Mehrfachauswahl im Array zu verarbeiten.

Wie kann ich das umgehen? Dank

Antwort

12

Wenn Sie einen Namen wie name="Europe[]" verwenden, werden Sie eine Zeichenfolge für Ihre Kennung verwenden müssen (die Kennung der Name, nicht die id des Elements) in rules und messages, wie folgt aus:

$(document).ready(function(){ 
    $("#commentForm").validate({ 
     rules: { 
     'Europe[]': { 
       required: "#dist_europe:checked", 
       minlength: 1 
       } 
     }, 
     messages: { 
     'Europe[]': "Please select at least 1 country" 
     }, 
    debug: true 
    }); 
}); 

You can test it out here.

+0

Vielen Dank. Es funktioniert großartig. – slok

Verwandte Themen