想将表单中的邮政编码与相应的状态进行匹配

时间:2014-06-22 06:20:21

标签: javascript

我是这些新手。我正在尝试编写一个函数,以确保用户在表单中输入的状态与他/她输入的邮政编码相匹配。 例如,我的州(威斯康星州,威斯康星州)的邮政编码介于53000和54999之间,所以我想确保如果表格中输入的邮政编码介于53000和54999之间,则输入的状态为WI,如果不是用户被提醒。我的HTML和代码如下:它将字符串邮政编码转换为数字,但应该比较邮政编码和状态的部分不起作用。如何使用test()方法将输入的状态与对应于邮政编码的实际状态进行比较?谢谢。 .................................................. ..................

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title> Matching state and zip code</title>

<script>
function validate(form) {
var returnValue = true;
var state = form.txtState.value;
var zip = form.txtZipcode.value;
var nzip = parseInt("form.txtZipcode.value");


if (state.length !=2) {
returnValue = false;
alert("The state field is empty. Please enter a state.");
frmRegister.txtState.focus();
}
if ((nzip >= 5300 && nzip <=5499) && (state !== WI)){
returnValue = false;
alert("The zip code does not match the state. Please check again");
frmRegister.txtState.focus();
}

if (zip.length !==5) {
returnValue = false;
alert("Your zip code should be \n 5 digits long. Please enter a real US zip code");
frmRegister.txtZipcode.focus();
}

if (typeof nzip == "string") { 
alert('nzip is a string.') 
}
if (typeof nzip == "number") { 
alert('nzip is a number.') 
}

else
return returnValue;
}

</script>

</head>
<body>
<form name ="frmRegister" method="post"  action ="register.aspx"
onsubmit="return validate(this);">

<fieldset>
<legend>Register with us</legend>

<div> 
<label for ="txtState"> STATE:</label>
<input type="text" name="txtState" id ="txtState" size = "12"/>
</div>

<div> 
<label for ="txtZipcode"> ZIP CODE:</label>
<input type="text" name="txtZipcode" id ="txtZipcode" size = "12"/>
</div>

<div>
<input type="submit" value="Send"/>
</div>
</form>

</body>
</html>

1 个答案:

答案 0 :(得分:0)

通过将邮政编码值的范围存储在JSON数组中来执行此检查,例如

var states = {WI : {start : 5000,end:6000}, ST : {start: 6001,end: 7000}};

现在获取state的值,让它成为&#34; state_entered&#34;,现在得到范围为

var range = states.state_entered;

现在范围检查更容易

if(zipcode_entered > range.start && zipcode_entered < range.end){
   alert("That's correct!!!");
}

通过这种方式,您可以处理任意数量的状态,而代码不会很麻烦。