0

OK, I have a JS which validates the correct format for postcodes (or zip) on an html form - works fine.

But what I want to do is to use a JS to see if a website visitor is eligible for a particular service on their postcode / zip - ie the first general part on the code. For example if they type L15****, or L16**** or L18**** (where the asterisk could be anything) it pops up the alert box with a message saying "Yes eligible" but any other code returns "No sorry not eligible" - eg L19**** it returns nope.

I've tried hacking the code that validates to format and can manage it for just the first character - ie the L but I'm totally lost after that. I don't know if hacking the below will work.

I'm guessing I might need to add in an array of 'eligible' variables - but not sure.

function checkPostCode (toCheck) {

  // Permitted letters depend upon their position in the postcode.
  var alpha1 = "[l]";                       // Character 1
  var alpha2 = "[abcdefghklmnopqrstuvwxy]";                       // Character 2
  var alpha3 = "[abcdefghjkpmnrstuvwxy]";                         // Character 3
  var alpha4 = "[abehmnprvwxy]";                                  // Character 4
  var alpha5 = "[abdefghjlnpqrstuwxyz]";                          // Character 5
  
  // Array holds the regular expressions for the valid postcodes
  var pcexp = new Array ();

   // Array holds the regular expressions for the valid postcodes
  var pcexp = new Array ();

  // Expression for postcodes: AN NAA, ANN NAA, AAN NAA, and AANN NAA
  pcexp.push (new RegExp ("^(" + alpha1 + "{1}" + alpha2 + "?[0-9]{1,2})(\\s*)([0-9]{1}" + alpha5 + "{2})$","i"));
  
  // Expression for postcodes: ANA NAA
  pcexp.push (new RegExp ("^(" + alpha1 + "{1}[0-9]{1}" + alpha3 + "{1})(\\s*)([0-9]{1}" + alpha5 + "{2})$","i"));

  // Expression for postcodes: AANA  NAA
  pcexp.push (new RegExp ("^(" + alpha1 + "{1}" + alpha2 + "{1}" + "?[0-9]{1}" + alpha4 +"{1})(\\s*)([0-9]{1}" + alpha5 + "{2})$","i"));
 

  // Load up the string to check
  var postCode = toCheck;

  // Assume we're not going to find a valid postcode
  var valid = false;
  
  // Check the string against the types of post codes
  for ( var i=0; i<pcexp.length; i++) {
    if (pcexp[i].test(postCode)) {
    
      
      
      // Load new postcode back into the form element
      valid = true;
      
      // Remember that we have found that the code is valid and break from loop
      break;
    }
  }
  
  // Return with either the reformatted valid postcode or the original invalid 
  // postcode
  if (valid) {return postCode;} else return false;
}
1
Contributor
1
Reply
3
Views
7 Years
Discussion Span
Last Post by davidjcolbran
1

Managed to figure it out ... I think i was over complicating things looking at that validation format script.

<script>
function validate()
{
var str = document.getElementById("pc").value; // receives L16ABC
var pcode = str.substr(0,3); // gets L16 only
if (pcode == "L15" || pcode == "L16" || pcode == "L18")
alert ("Eligible")
else
alert ("Not Eligible");
}</script>

And the call from the form;

<input type="text" name="pc" id="pc" />
<button name="mybutton" type="button" onclick="validate();" style="margin-left: 30px; color: #f00;">Check</button>
This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.