2011-04-14 4 views
2

J'ai regardé à travers certains des messages plus anciens et encore un peu confus avec ce qui se passe. J'ai un formulaire d'expédition qui n'autorise pas les boîtes postales, donc j'essaie de trouver un validateur à regarder à travers et assurez-vous que le champ de saisie n'a pas de PO dedans. Je m'assure que tous les champs sont remplis avec ce code mais je me demande comment je pourrais incorporer dans la validation de la boîte postale. Note: Ceci est un fichier séparé de ma forme réelleJquery PO BOX validation

$(document).ready(

    function() 
    { 
     $('#shipping').submit(
      function() 
      { 

        var required_fields = new Array(
         'name', 
         'service', 
         'company', 
         'contact', 
         'street', 
         'city', 
         'state', 
         'zip', 
         'projectnum' 
        ); 


         for(j in required_fields) 
         { 

          var theRequiredField = required_fields[j] 
          var inputField = $('[name="' + theRequiredField + '"]') 

          if(inputField.val() == '') 
          {         
           alert("The '" + theRequiredField + "' field is required."); 
           inputField.focus(); 
           return false; 

          } 

         } 


      } // function 
      ) // submit 
    } 

); 

Répondre

8

Il peut y avoir une meilleure méthode, mais voici ce que je suis venu avec:

Live Demo

$('input[name=address]').each(function() { 
    var pattern = new RegExp('[PO.]*\\s?B(ox)?.*\\d+', 'i'); 
    if ($(this).val().match(pattern)) { 
     $(this).after('<span class="pob">No PO Boxes</span>'); 
    } 
}); 
+0

Parfait, merci pour l'aide. J'ai dû le manipuler un peu avec le mien mais le concept était là et ça marche. Merci beaucoup! –

+0

@Mike: Vous pariez. J'ai essayé d'inclure autant de bizarreries que j'ai pu dans la démo JSFiddle, donc j'espère que vous ne rencontrerez pas de faux positifs. – drudge

0

je le RegEx fourni ci-dessus par drudge. Cela fonctionne pour la plupart des cas, mais cela m'a donné un faux positif pour des chaînes comme "1122 nouvel espace - Apt .99B1". J'ai donc modifié RegEx pour:

var pattern = new RegExp('(P.O.|PO|Box)+\\s?.*\\d+', 'i'); 

Celui-ci vérifie pour l'un ou l'autre de "P.O." ou "PO" ou "Box", suivi d'un numéro pour le déterminer comme adresse de boîte postale.