Jump to content

Validating a country / state form input


horseatingweeds

Recommended Posts

I'm having trouble validating a state and country input. I didn't write it so I'm confused about why my code isn't working with it.

 

This is the form part:

 

<fieldset>

<legend><span>*</span> Location</legend>

<select id='countrySelect' name='country' onchange='populateState()'></select>

<select id='stateSelect' name='state'></select>

<script type="text/javascript">initCountry('US'); </script>

</fieldset>

 

And this is the JavaScript that builds it:

 

// If you have PHP you can set the post values like this

//var postState = '<?= $_POST["state"] ?>';

//var postCountry = '<?= $_POST["country"] ?>';

var postState = '';

var postCountry = '';

 

// State table

//

// To edit the list, just delete a line or add a line. Order is important.

// The order displayed here is the order it appears on the drop down.

//

var state = '\

US:AK:Alaska|\

US:AL:Alabama|\

US:AR:Arkansas|\

US:AS:American Samoa|\

US:AZ:Arizona|\

US:CA:California|\

US:CO:Colorado|\

US:CT:Connecticut|\

US:DC:D.C.|\

US:DE:Delaware|\

US:FL:Florida|\

US:FM:Micronesia|\

US:GA:Georgia|\

US:GU:Guam|\

US:HI:Hawaii|\

US:IA:Iowa|\

US:ID:Idaho|\

US:IL:Illinois|\

US:IN:Indiana|\

US:KS:Kansas|\

US:KY:Kentucky|\

US:LA:Louisiana|\

US:MA:Massachusetts|\

US:MD:Maryland|\

US:ME:Maine|\

US:MH:Marshall Islands|\

US:MI:Michigan|\

US:MN:Minnesota|\

US:MO:Missouri|\

US:MP:Marianas|\

US:MS:Mississippi|\

US:MT:Montana|\

US:NC:North Carolina|\

US:ND:North Dakota|\

US:NE:Nebraska|\

US:NH:New Hampshire|\

US:NJ:New Jersey|\

US:NM:New Mexico|\

US:NV:Nevada|\

US:NY:New York|\

US:OH:Ohio|\

US:OK:Oklahoma|\

US:OR:Oregon|\

US:PA:Pennsylvania|\

US:PR:Puerto Rico|\

US:PW:Palau|\

US:RI:Rhode Island|\

US:SC:South Carolina|\

US:SD:South Dakota|\

US:TN:Tennessee|\

US:TX:Texas|\

US:UT:Utah|\

US:VA:Virginia|\

US:VI:Virgin Islands|\

US:VT:Vermont|\

US:WA:Washington|\

US:WI:Wisconsin|\

US:WV:West Virginia|\

US:WY:Wyoming|\

US:AA:Military Americas|\

US:AE:Military Europe/ME/Canada|\

US:AP:Military Pacific|\

CA:AB:Alberta|\

CA:MB:Manitoba|\

CA:AB:Alberta|\

CA:BC:British Columbia|\

CA:MB:Manitoba|\

CA:NB:New Brunswick|\

CA:NL:Newfoundland and Labrador|\

CA:NS:Nova Scotia|\

CA:NT:Northwest Territories|\

CA:NU:Nunavut|\

CA:ON:Ontario|\

CA:PE:Prince Edward Island|\

CA:QC:Quebec|\

CA:SK:Saskatchewan|\

CA:YT:Yukon Territory|\

AU:AAT:Australian Antarctic Territory|\

AU:ACT:Australian Capital Territory|\

AU:NT:Northern Territory|\

AU:NSW:New South Wales|\

AU:QLD:Queensland|\

AU:SA:South Australia|\

AU:TAS:Tasmania|\

AU:VIC:Victoria|\

AU:WA:Western Australia|\

BR:AC:Acre|\

BR:AL:Alagoas|\

BR:AM:Amazonas|\

BR:AP:Amapa|\

BR:BA:Baia|\

BR:CE:Ceara|\

BR:DF:Distrito Federal|\

BR:ES:Espirito Santo|\

BR:FN:Fernando de Noronha|\

BR:GO:Goias|\

BR:MA:Maranhao|\

BR:MG:Minas Gerais|\

BR:MS:Mato Grosso do Sul|\

BR:MT:Mato Grosso|\

BR:PA:Para|\

BR:PB:Paraiba|\

BR:PE:Pernambuco|\

BR:PI:Piaui|\

BR:PR:Parana|\

BR:RJ:Rio de Janeiro|\

BR:RN:Rio Grande do Norte|\

BR:RO:Rondonia|\

BR:RR:Roraima|\

BR:RS:Rio Grande do Sul|\

BR:SC:Santa Catarina|\

BR:SE:Sergipe|\

BR:SP:Sao Paulo|\

BR:TO:Tocatins|\

NL:DR:Drente|\

NL:FL:Flevoland|\

NL:FR:Friesland|\

NL:GL:Gelderland|\

NL:GR:Groningen|\

NL:LB:Limburg|\

NL:NB:Noord Brabant|\

NL:NH:Noord Holland|\

NL:OV:Overijssel|\

NL:UT:Utrecht|\

NL:ZH:Zuid Holland|\

NL:ZL:Zeeland|\

UK:AVON:Avon|\

UK:BEDS:Bedfordshire|\

UK:BERKS:Berkshire|\

UK:BUCKS:Buckinghamshire|\

UK:CAMBS:Cambridgeshire|\

UK:CHESH:Cheshire|\

UK:CLEVE:Cleveland|\

UK:CORN:Cornwall|\

UK:CUMB:Cumbria|\

UK:DERBY:Derbyshire|\

UK:DEVON:Devon|\

UK:DORSET:Dorset|\

UK:DURHAM:Durham|\

UK:ESSEX:Essex|\

UK:GLOUS:Gloucestershire|\

UK:GLONDON:Greater London|\

UK:GMANCH:Greater Manchester|\

UK:HANTS:Hampshire|\

UK:HERWOR:Hereford & Worcestershire|\

UK:HERTS:Hertfordshire|\

UK:HUMBER:Humberside|\

UK:IOM:Isle of Man|\

UK:IOW:Isle of Wight|\

UK:KENT:Kent|\

UK:LANCS:Lancashire|\

UK:LEICS:Leicestershire|\

UK:LINCS:Lincolnshire|\

UK:MERSEY:Merseyside|\

UK:NORF:Norfolk|\

UK:NHANTS:Northamptonshire|\

UK:NTHUMB:Northumberland|\

UK:NOTTS:Nottinghamshire|\

UK:OXON:Oxfordshire|\

UK:SHROPS:Shropshire|\

UK:SOM:Somerset|\

UK:STAFFS:Staffordshire|\

UK:SUFF:Suffolk|\

UK:SURREY:Surrey|\

UK:SUSS:Sussex|\

UK:WARKS:Warwickshire|\

UK:WMID:West Midlands|\

UK:WILTS:Wiltshire|\

UK:YORK:Yorkshire|\

EI:CO ANTRIM:County Antrim|\

EI:CO ARMAGH:County Armagh|\

EI:CO DOWN:County Down|\

EI:CO FERMANAGH:County Fermanagh|\

EI:CO DERRY:County Londonderry|\

EI:CO TYRONE:County Tyrone|\

EI:CO CAVAN:County Cavan|\

EI:CO DONEGAL:County Donegal|\

EI:CO MONAGHAN:County Monaghan|\

EI:CO DUBLIN:County Dublin|\

EI:CO CARLOW:County Carlow|\

EI:CO KILDARE:County Kildare|\

EI:CO KILKENNY:County Kilkenny|\

EI:CO LAOIS:County Laois|\

EI:CO LONGFORD:County Longford|\

EI:CO LOUTH:County Louth|\

EI:CO MEATH:County Meath|\

EI:CO OFFALY:County Offaly|\

EI:CO WESTMEATH:County Westmeath|\

EI:CO WEXFORD:County Wexford|\

EI:CO WICKLOW:County Wicklow|\

EI:CO GALWAY:County Galway|\

EI:CO MAYO:County Mayo|\

EI:CO LEITRIM:County Leitrim|\

EI:CO ROSCOMMON:County Roscommon|\

EI:CO SLIGO:County Sligo|\

EI:CO CLARE:County Clare|\

EI:CO CORK:County Cork|\

EI:CO KERRY:County Kerry|\

EI:CO LIMERICK:County Limerick|\

EI:CO TIPPERARY:County Tipperary|\

EI:CO WATERFORD:County Waterford|\

';

 

// Country data table

//

// To edit the list, just delete a line or add a line. Order is important.

// The order displayed here is the order it appears on the drop down.

//

var country = '\

AF:Afghanistan|\

AL:Albania|\

DZ:Algeria|\

AS:American Samoa|\

AD:Andorra|\

AO:Angola|\

AI:Anguilla|\

AQ:Antarctica|\

AG:Antigua and Barbuda|\

AR:Argentina|\

AM:Armenia|\

AW:Aruba|\

AU:Australia|\

AT:Austria|\

AZ:Azerbaijan|\

AP:Azores|\

BS:Bahamas|\

BH:Bahrain|\

BD:Bangladesh|\

BB:Barbados|\

BY:Belarus|\

BE:Belgium|\

BZ:Belize|\

BJ:Benin|\

BM:Bermuda|\

BT:Bhutan|\

BO:Bolivia|\

BA:Bosnia And Herzegowina|\

XB:Bosnia-Herzegovina|\

BW:Botswana|\

BV:Bouvet Island|\

BR:Brazil|\

IO:British Indian Ocean Territory|\

VG:British Virgin Islands|\

BN:Brunei Darussalam|\

BG:Bulgaria|\

BF:Burkina Faso|\

BI:Burundi|\

KH:Cambodia|\

CM:Cameroon|\

CA:Canada|\

CV:Cape Verde|\

KY:Cayman Islands|\

CF:Central African Republic|\

TD:Chad|\

CL:Chile|\

CN:China|\

CX:Christmas Island|\

CC:Cocos (Keeling) Islands|\

CO:Colombia|\

KM:Comoros|\

CG:Congo|\

CD:Congo, The Democratic Republic O|\

CK:Cook Islands|\

XE:Corsica|\

CR:Costa Rica|\

CI:Cote d` Ivoire (Ivory Coast)|\

HR:Croatia|\

CU:Cuba|\

CY:Cyprus|\

CZ:Czech Republic|\

DK:Denmark|\

DJ:Djibouti|\

DM:Dominica|\

DO:Dominican Republic|\

TP:East Timor|\

EC:Ecuador|\

EG:Egypt|\

SV:El Salvador|\

GQ:Equatorial Guinea|\

ER:Eritrea|\

EE:Estonia|\

ET:Ethiopia|\

FK:Falkland Islands (Malvinas)|\

FO:Faroe Islands|\

FJ:Fiji|\

FI:Finland|\

FR:France (Includes Monaco)|\

FX:France, Metropolitan|\

GF:French Guiana|\

PF:French Polynesia|\

TA:French Polynesia (Tahiti)|\

TF:French Southern Territories|\

GA:Gabon|\

GM:Gambia|\

GE:Georgia|\

DE:Germany|\

GH:Ghana|\

GI:Gibraltar|\

GR:Greece|\

GL:Greenland|\

GD:Grenada|\

GP:Guadeloupe|\

GU:Guam|\

GT:Guatemala|\

GN:Guinea|\

GW:Guinea-Bissau|\

GY:Guyana|\

HT:Haiti|\

HM:Heard And Mc Donald Islands|\

VA:Holy See (Vatican City State)|\

HN:Honduras|\

HK:Hong Kong|\

HU:Hungary|\

IS:Iceland|\

IN:India|\

ID:Indonesia|\

IR:Iran|\

IQ:Iraq|\

IE:Ireland|\

EI:Ireland (Eire)|\

IL:Israel|\

IT:Italy|\

JM:Jamaica|\

JP:Japan|\

JO:Jordan|\

KZ:Kazakhstan|\

KE:Kenya|\

KI:Kiribati|\

KP:Korea, Democratic People\'S Repub|\

KW:Kuwait|\

KG:Kyrgyzstan|\

LA:Laos|\

LV:Latvia|\

LB:Lebanon|\

LS:Lesotho|\

LR:Liberia|\

LY:Libya|\

LI:Liechtenstein|\

LT:Lithuania|\

LU:Luxembourg|\

MO:Macao|\

MK:Macedonia|\

MG:Madagascar|\

ME:Madeira Islands|\

MW:Malawi|\

MY:Malaysia|\

MV:Maldives|\

ML:Mali|\

MT:Malta|\

MH:Marshall Islands|\

MQ:Martinique|\

MR:Mauritania|\

MU:Mauritius|\

YT:Mayotte|\

MX:Mexico|\

FM:Micronesia, Federated States Of|\

MD:Moldova, Republic Of|\

MC:Monaco|\

MN:Mongolia|\

MS:Montserrat|\

MA:Morocco|\

MZ:Mozambique|\

MM:Myanmar (Burma)|\

NA:Namibia|\

NR:Nauru|\

NP:Nepal|\

NL:Netherlands|\

AN:Netherlands Antilles|\

NC:New Caledonia|\

NZ:New Zealand|\

NI:Nicaragua|\

NE:Niger|\

NG:Nigeria|\

NU:Niue|\

NF:Norfolk Island|\

MP:Northern Mariana Islands|\

NO:Norway|\

OM:Oman|\

PK:Pakistan|\

PW:Palau|\

PS:Palestinian Territory, Occupied|\

PA:Panama|\

PG:Papua New Guinea|\

PY:Paraguay|\

PE:Peru|\

PH:Philippines|\

PN:Pitcairn|\

PL:Poland|\

PT:Portugal|\

PR:Puerto Rico|\

QA:Qatar|\

RE:Reunion|\

RO:Romania|\

RU:Russian Federation|\

RW:Rwanda|\

KN:Saint Kitts And Nevis|\

SM:San Marino|\

ST:Sao Tome and Principe|\

SA:Saudi Arabia|\

SN:Senegal|\

XS:Serbia-Montenegro|\

SC:Seychelles|\

SL:Sierra Leone|\

SG:Singapore|\

SK:Slovak Republic|\

SI:Slovenia|\

SB:Solomon Islands|\

SO:Somalia|\

ZA:South Africa|\

GS:South Georgia And The South Sand|\

KR:South Korea|\

ES:Spain|\

LK:Sri Lanka|\

NV:St. Christopher and Nevis|\

SH:St. Helena|\

LC:St. Lucia|\

PM:St. Pierre and Miquelon|\

VC:St. Vincent and the Grenadines|\

SD:Sudan|\

SR:Suriname|\

SJ:Svalbard And Jan Mayen Islands|\

SZ:Swaziland|\

SE:Sweden|\

CH:Switzerland|\

SY:Syrian Arab Republic|\

TW:Taiwan|\

TJ:Tajikistan|\

TZ:Tanzania|\

TH:Thailand|\

TG:Togo|\

TK:Tokelau|\

TO:Tonga|\

TT:Trinidad and Tobago|\

XU:Tristan da Cunha|\

TN:Tunisia|\

TR:Turkey|\

TM:Turkmenistan|\

TC:Turks and Caicos Islands|\

TV:Tuvalu|\

UG:Uganda|\

UA:Ukraine|\

AE:United Arab Emirates|\

UK:United Kingdom|\

GB:Great Britain|\

US:United States|\

UM:United States Minor Outlying Isl|\

UY:Uruguay|\

UZ:Uzbekistan|\

VU:Vanuatu|\

XV:Vatican City|\

VE:Venezuela|\

VN:Vietnam|\

VI:Virgin Islands (U.S.)|\

WF:Wallis and Furuna Islands|\

EH:Western Sahara|\

WS:Western Samoa|\

YE:Yemen|\

YU:Yugoslavia|\

ZR:Zaire|\

ZM:Zambia|\

ZW:Zimbabwe|\

';

 

function TrimString(sInString) {

  if ( sInString ) {

    sInString = sInString.replace( /^\s+/g, "" );// strip leading

    return sInString.replace( /\s+$/g, "" );// strip trailing

  }

}

 

// Populates the country selected with the counties from the country list

function populateCountry(defaultCountry) {

  if ( postCountry != '' ) {

    defaultCountry = postCountry;

  }

  var countryLineArray = country.split('|');  // Split into lines

  var selObj = document.getElementById('countrySelect');

  selObj.options[0] = new Option('Select Country','');

  selObj.selectedIndex = 0;

  for (var loop = 0; loop < countryLineArray.length; loop++) {

    lineArray = countryLineArray[loop].split(':');

    countryCode  = TrimString(lineArray[0]);

    countryName  = TrimString(lineArray[1]);

    if ( countryCode != '' ) {

      selObj.options[loop + 1] = new Option(countryName, countryCode);

    }

    if ( defaultCountry == countryCode ) {

      selObj.selectedIndex = loop + 1;

    }

  }

}

 

function populateState() {

  var selObj = document.getElementById('stateSelect');

  var foundState = false;

  // Empty options just in case new drop down is shorter

  if ( selObj.type == 'select-one' ) {

    for (var i = 0; i < selObj.options.length; i++) {

      selObj.options = null;

    }

    selObj.options.length=null;

    selObj.options[0] = new Option('Select State','');

    selObj.selectedIndex = 0;

  }

  // Populate the drop down with states from the selected country

  var stateLineArray = state.split("|");  // Split into lines

  var optionCntr = 1;

  for (var loop = 0; loop < stateLineArray.length; loop++) {

    lineArray = stateLineArray[loop].split(":");

    countryCode  = TrimString(lineArray[0]);

    stateCode    = TrimString(lineArray[1]);

    stateName    = TrimString(lineArray[2]);

  if (document.getElementById('countrySelect').value == countryCode && countryCode != '' ) {

    // If it's a input element, change it to a select

      if ( selObj.type == 'text' ) {

        parentObj = document.getElementById('stateSelect').parentNode;

        parentObj.removeChild(selObj);

        var inputSel = document.createElement("SELECT");

        inputSel.setAttribute("name","state");

        inputSel.setAttribute("id","stateSelect");

        parentObj.appendChild(inputSel) ;

        selObj = document.getElementById('stateSelect');

        selObj.options[0] = new Option('Select State','');

        selObj.selectedIndex = 0;

      }

      if ( stateCode != '' ) {

        selObj.options[optionCntr] = new Option(stateName, stateCode);

      }

      // See if it's selected from a previous post

      if ( stateCode == postState && countryCode == postCountry ) {

        selObj.selectedIndex = optionCntr;

      }

      foundState = true;

      optionCntr++

    }

  }

  // If the country has no states, change the select to a text box

  if ( ! foundState ) {

    parentObj = document.getElementById('stateSelect').parentNode;

    parentObj.removeChild(selObj);

  // Create the Input Field

    var inputEl = document.createElement("INPUT");

    inputEl.setAttribute("id", "stateSelect");

    inputEl.setAttribute("type", "text");

    inputEl.setAttribute("name", "state");

    inputEl.setAttribute("size", 20);

    inputEl.setAttribute("value", postState);

    parentObj.appendChild(inputEl) ;

  }

}

 

function initCountry(country) {

  populateCountry(country);

  populateState();

}

 

And here is the code that is acting funny:

 

$country = $_POST['country'];

$state = $_POST['state'];

if ($country == ('CA' || 'US' || 'AU' || 'BR' || 'NL' || 'UK' || 'EI'))

{

if ($country == ('NL' || 'US' || 'UK'))

{

$response = 'Plesae enter a state for your location in the ' . $country;

}

else

{

$response = 'Plesae enter a state for your location in ' . $country;

}

}

 

Regardless of the input, the function returns the else response.

Link to comment
https://forums.phpfreaks.com/topic/62560-validating-a-country-state-form-input/
Share on other sites

if ($country == ('CA' || 'US' || 'AU' || 'BR' || 'NL' || 'UK' || 'EI'))

 

You have to compare country separately to each of these values.  You cannot use the OR operator like that.  So,

 

if ($country=="CA" || $country=="US")

 

and so on with the OR operator

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.