实现带样式的表单验证:用户名、密码验证

html:

<span style="font-size:18px;"><!doctype html>
<html>
 <head>
	<meta charset="UTF-8">
	<title>实现带样式的表单验证</title>
	<link rel="Stylesheet" href="css/3_2.css" />
 </head>
 <body>
	<form id="form1">
		<h2>增加管理员</h2>
		<table>
			<tr>
				<td>姓名:</td>
				<td>
					<!--当文本框获得焦点:显示提示div-->
					<!--当文本框市区焦点:验证文本框内容-->
					<input name="uname"
						οnfοcus="show(this)"
						οnblur="valiName(this)"/>
					<span>*</span>
				</td>
				<td>
					<div class="vali_Info">
						10个字符以内的字母、数字或下划线的组合
					</div>
				</td>
			</tr>
			<tr>
				<td>密码:</td>
				<td>
					<input type="password" name="pwd"
						οnfοcus="show(this)"
						οnblur="valiPwd(this)"/>
					<span>*</span>
				</td>
				<td>
					<div class="vali_Info">6位数字</div>
				</td>
			</tr>
			<tr>
				<td></td>
				<td colspan="2">
					<input type="submit" value="保存"/>
					<input type="reset" value="重填"/>
				</td>
			</tr>				
	    </table>
	</form>
	<script src="js/3_2.js"></script>
 </body>
</html>
</span>
js:

<span style="font-size:18px;">/*
	txt_focus:当文本框获得焦点时给当前文本框穿
				dang文本框失去焦点,给当前文本框脱掉
	vali_success:验证通过时,给旁边的div穿
	vali_fail:验证失败时,给旁边的div穿
	vali_Info:默认就穿在div上
				当文本框获得焦点时,脱掉旁边div的衣服
*/
function show(txt){
	//找到txt旁边的div,脱掉衣服
	txt.parentNode
		.nextElementSibling
		.firstElementChild
		.removeAttribute("class");
	//给txt穿txt_focus
	txt.setAttribute("class","txt_focus");//给txt穿txt_focus
}
function valiName(txt){
	//给txt脱掉衣服
	txt.removeAttribute("class");
	//用/^\w{1,10}$/,(给1就是必填),验证txt内容,(内容,必须用value,因为input是非封闭式标记,所以不能用innerHTML)
	//将结果保存在result中
	var result=/^\w{1,10}$/.test(txt.value);
	//找到txt旁边的div,则穿valid_success,否则穿vali_fail
	txt.parentNode
		.nextElementSibling
		.firstElementChild
		.setAttribute("class",result?"vali_success":"vali_fail");
	return result;
}
function valiPwd(txt){
	//给txt脱掉衣服
	txt.className="";
	//用/^\d{6}$/,验证txt的内容,将结果保存到变量result中
	var result=/^\d{6}$/.test(txt.value);
	//找到txt旁边的div,则穿valid_success,否则穿vali_fail
	txt.parentNode
		.nextElementSibling
		.firstElementChild
		.className=result?"vali_success":"vali_fail";
	return result;
}</span>


css:

<span style="font-size:18px;">table{width:700px}
/*父元素下的第1个,第n个,最后一个td子元素*/
td:first-child{width:60px}
/*IE不支持nth-child*/
td:nth-child(2){width:200px}
/*IE*/
td:first-child+td{width:200px}
/*IE不支持--可以靠总宽度来调节
td:last-child{width:340px}*/
td span{color:red}

.vali_Info{/* 页面初始,验证消息不显示 */
	display:none;
}
.txt_focus{/*当文本框获得焦点时穿上*/
	border-top:2px solid black;
	border-left:2px solid black;
}/*当文本框失去焦点时脱下*/

.vali_success,.vali_fail{
	background-repeat:no-repeat;
    background-position:left center;
	display:block;
}
/* 验证消息:验证通过时的样式 */
.vali_success{
    background-image:url("../images/ok.png");
	padding-left:20px;
	width:0px;height:20px;
	overflow:hidden;
}
/* 验证消息:验证失败时的样式 */
.vali_fail{
    background-image:url("../images/warning.png");
    border:1px solid red;
    background-color:#ddd;
    color:Red;
    padding-left:30px;
}
</span>
效果:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值