2010-02-27 6 views
2

Sur mon formulaire d'inscription client je les règles suivantesValider (plug-in de bassistance) nécessaire (dépendance-rappel) question

// Define the div containing validation messages 
var container = $('#clientErrorWrapper'); 
// Start validation routine 
// validate the form when it is submitted 
var validator = $("#frmEdit").submit(function() { 
    // update underlying textarea before submit validation 
    tinyMCE.triggerSave(); 
    }).validate({ 
    errorContainer: container, 
    errorLabelContainer: $("ul", container), 
    wrapper: 'li', 
    // start rules (add new rules as necessary) 
     rules: { 
      firstname: { 
       required: true 
      }, 
      lastname: { 
       required: true 
      }, 
      email: { 
       required: true 
      }, 
      address1: { 
       required: true 
      }, 
      city: { 
       required: true 
      }, 
      state_province: { 
       required: function(element) { 
        return $("#country").val() == 'US'; 
        } 
      }, 
      postcode: { 
       required: true 
      }, 
      country: { 
       required: true 
      } 
    // finish rules 
    } 

Je voudrais étendre les règles de state_province de sorte que ce champ est obligatoire si le pays est égal à CA ou AU aussi, comment puis-je y parvenir s'il vous plaît.

Répondre

4

Vous pouvez faire:

 state_province: { 
      required: function(element) { 
       var c = $("#country").val(); 
       return c=='US' || c=='CA' || c=='AU'; 
       } 
     } 

Pas besoin d'être plus compliqué que cela à moins que votre liste devient un peu plus.

Si toutefois la liste grandit, vous pouvez utiliser jQuery's .inArray():

 state_province: { 
      required: function(element) { 
       return $.inArray($("#country").val(), ['US','CA','AU']) > -1; 
       } 
     } 
+0

Nick, grâce à votre 1ère solution fonctionne parfaitement, mais le 2 montre l'erreur suivante dans l'objet Firebug invalide initialiseur –

+0

@ I-CRE8 - Woops , utilisez '[]' au lieu de '{}' pour les tableaux, réponse mise à jour. –

+0

Fabuleux merci Nick. –

Questions connexes