js学习笔记(四)表单验证

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
<script src="script63.js"></script>
<style>
	body{
		color:#000;
		background-color:#FFF;
	}
	input.invalid{
		background-color:#FF9;
		border:2px red inset;
	}
	label.invalid{
		color:#F00;
		font-weight:bold;
	}
	select{
		margin-left:80px;
	}
	input{
		margin-left:30px;
	}
	input+select,input+input{
		margin-left:20px;
	}
	.centered{
		text-align:center;
	}
</style>
</HEAD>

<BODY>
<h1 class="centered">Car Picker</h1>
<form action="SomeAction.cgi">
	<p>
	<label for="emailAddr">Email Address:
	<input type="text" size=30 id="emailAddr" class="reqd email">
	</label>
	</p>
	<p><label for="color">Colors:  
		<select id="color" class="reqd">
			<option value="" selected>Choose a color</option>
			<option value="red" >Red</option>
			<option value="green" >Green</option>
			<option value="blue" >Blue</option>
			<option value="silver" >Silver</option>
		</select>
	</label></p>
	<p>
	<label for="sunroof">Options:
		<input type="checkbox" id="sunroof" value="Yes">Sunroof(Two door only)</input>
		</label>
	<label for="powerWindows"><input type="checkbox" id="powerWindows" value="Yes">Power Windows</input>
	</label>
	</p>
	<p>
	<label for="DoorCt" >Doors:   
		<input type="radio" id="twoDoor" name="DoorCt" value="Two">Two</input>
		<input type="radio" id="fourDoor" name="DoorCt" value="Four">Four</input>
	</label>
	</p>
	<p>
	Enter your Zip code or pick the dealer nearest you:<br>
	<label for="zip">Zip:<input type="text" size="5" maxlength="5" id="zip" class="isZip dealerList"></label>
	<select id="deakerList" class="zip" size=4>
		<option value="Califomia-Lemon Grove">Califomia-Lemon Grove</option>
		<option value="Califomia-Lomita">Califomia-Lomita</option>
		<option value="Califomia-Long Beach">Califomia-Long Beach</option>
		<option value="Califomia-Los Alamitos">Califomia-Los Alamitos</option>
	</select>
	</p>
	<input type="submit" value="submit">  
	<input type="reset" value="reset">
	</form>
</BODY>
</HTML>

//有效性检查
window.οnlοad=initForm;

function initForm(){
	for(var i=0;i<document.forms.length;i++){
		document.forms[i].οnsubmit=validForm;

	}

}

function validForm(){
	var allGood = true;
	var allTags = document.getElementsByTagName("*");
	for(var i=0;i<allTags.length;i++){
		if(!validTag(allTags[i])){
			allGood = false;
		}
	}
	return allGood;
	function validTag(thisTag){
		var outClass = "";
		var allClasses = thisTag.className.split(" ");
		for(var j=0;j<allClasses.length;j++){
			outClass+=validBasedOnClass(allClasses[j])+" ";
		}
		thisTag.className=outClass;
		if(outClass.indexOf("invalid")>-1){
			invalidLabel(thisTag.parentNode);
			thisTag.focus();
			if(thisTag.nodeName=="INPUT"){
				thisTag.select();
			}
			return false;
		}
		return true;
		function validBasedOnClass(thisClass){
			var classBack="";
			switch(thisClass){
				case "":
				case "invalid":
					break;
				case "reqd":
					if(allGood&&thisTag.value==""){
						classBack = "invalid ";
				}
				classBack+=thisClass;
				break;
				case "centered":
				case "radio":
				case "isNum":
				case "isZip":
				case "email":
					classBack+=thisClass;
				break;
				default:
					if(allGood&&!crossCheck(thisTag,thisClass)){
							classBack="invalid ";
				}
					classBack+=thisClass;
			}
			return classBack;
		}

		function crossCheck(inTag,otherFieldID){
			if(!document.getElementById(otherFieldID)){
					return false;
			}
			//return (inTag.value==document.getElementById(otherFieldID).value);
			return (inTag.value!=""||document.getElementById(otherFieldID).value!="");
		}
		function invalidLabel(parentTag){
				if(parentTag.nodeName=="LABEL"){
					parentTag.className+=" invalid";
				}
		}
	}
}
脚本中SomeAction.cgi只是一个CGI程序的示例名称,(其字面意思是某种操作)可以执行需要的任何操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值