我是这些新手。我正在尝试编写一个函数,以确保用户在表单中输入的状态与他/她输入的邮政编码相匹配。 例如,我的州(威斯康星州,威斯康星州)的邮政编码介于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>
答案 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!!!");
}
通过这种方式,您可以处理任意数量的状态,而代码不会很麻烦。