根据选择更改邮政编码所需的输入

时间:2016-02-17 06:15:54

标签: javascript html vb.net

我需要从vb.net下拉或使用javascript更改特定国家/地区的邮政编码我想更改邮政编码要求,因为加拿大和美国的做法不同。加拿大使用A1A 1A1的格式,例如,如果我从国家选择加拿大的邮政编码格式应该是A1A 1A1,而对于其他国家,它有zipCodePattern = / ^ \ d {5} [AZ] {1} $ |的组合。 ^ \ d {5} - \ d {4} $ /;我怎么能这样做。

我写了这个

function validateZipCode(zipcode)      {
         var country = document.getElementById(" lblCountry");

     if (country=="Canada")
      {

         var zipCodePattern = /^[A-Z}{1}[0-9]{1}[A-Z]{1}[ ]{1}[0-9]{1}[A-Z]{1}[0-9]{1}$/;
         return zipCodePattern.test(zipcode);
     }
     else 
     {
         var zipCodePattern = /^\w{6}$|^\d{5}-\d{4}$|^\d{5}$/;
         return zipCodePattern.test(zipcode);
     }
}

1 个答案:

答案 0 :(得分:1)

使用javascript,您可以利用ternary operator在模式之间切换(使用jQuery,只是因为它更易于阅读)



var pattern = '',
    usPattern = '^\\d{5}(-\\d{4})?$',
    caPattern = '^[ABCEGHJKLMNPRSTVXY]{1}\\d{1}[A-Z]{1} *\\d{1}[A-Z]{1}\\d{1}$'

// watch for country change
$('select').on('change', function(){
  
  // get the selected country
  var val = $(this).val();
  
  // set pattern based on `val` above
  pattern = val == 'us' ? usPattern : caPattern;
  
  // apply pattern to input
  $('input#postcode').attr('pattern', pattern)
  
})

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
  <select>
    <option value="us" selected>US</option>
    <option value="ca">CA</option>
  </select>

  <input id="postcode" type="text" pattern="^\d{5}(-\d{4})?$" required>
  <input type="submit">
</form>
&#13;
&#13;
&#13;