2011-04-14 37 views
2

我瀏覽了一些較舊的帖子,仍然對發生的事情感到困惑。我有一個運輸表單,不允許郵政信箱,所以我試圖找到一個驗證器來查看並確保輸入字段沒有郵政信箱。我確保每個字段都填寫了這個代碼,但是想知道如何將它與郵政信箱驗證結合起來。 注:這是從我的實際形式,一個單獨的文件Jquery PO BOX驗證

$(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 
    } 

); 

回答

8

有可能是一個更好的方法,但這裏是我想出了:

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

完美,感謝您的幫助。我必須和我一起操作它,但這個概念在那裏,它的工作原理。非常感謝! – 2011-04-14 19:36:15

+0

@Mike:你打賭。我試圖在JSFiddle演示中包含儘可能多的怪異特性,所以希望你不會遇到任何誤報。 – drudge 2011-04-14 19:52:56

0

我用RegEx上面提供的RegEx。它適用於大多數情況,但它給了我像「1122新空間 - 公寓99B1」這樣的字符串的假陽性。所以我將RegEx改爲:

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

這個檢查「P.O.」或「PO」或「Box」字樣,後跟一個數字以確定它爲PO Box地址。