需求
(1)用户名不能为空
(2)用户名必须在6-14位之间
(3)用户名只能有数字和字母组成,不能含有其它符号(正则表达式)
(4)密码和确认密码一致
(5)统一失去焦点验证
(6)错误提示信息统一在span标签中提示,并且要求字体12号,红色。
(7)文本框再次获得焦点后,清空错误提示信息
(8)最终表单中所有项均合法方可提交
结果演示
代码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>表单验证</title>
<style type="text/css">
span{
font-size: 12px;
color: red;
}
</style>
</head>
<body>
<!-- 思路
写出用户名+密码+确认密码+提交的表单
用户名失去焦点就检测是否正确,错误在旁边span显示
不为空+6-14位之间+数字和字母组成
确认密码失去焦点就验证是否和第一次是密码一致,错误在旁边span显示
提交表单
上述都正确后再提交
-->
<script type="text/javascript">
/*
(1)用户名不能为空
(2)用户名必须在6-14位之间
(3)用户名只能有数字和字母组成,不能含有其它符号(正则表达式)
(4)密码和确认密码一致
(5)统一失去焦点验证
(6)错误提示信息统一在span标签中提示,并且要求字体12号,红色。
(7)文本框再次获得焦点后,清空错误提示信息
(8)最终表单中所有项均合法方可提交
*/
window.onload=function(){
//console.log(11111)
// 用户名失去焦点就检测是否正确,错误在旁边span显示
// 不为空+6-14位之间+数字和字母组成
var myUseName=document.getElementById("useName");
var myUseNameSpan=document.getElementById("usenameSpan");
myUseName.onblur=function(){
//console.log(11111)
// 去除掉前后空白
var nameArr=myUseName.value.trim();
//console.log(nameArr);
//(1)用户名不能为空
if(nameArr==""){
myUseNameSpan.innerHTML="用户名不能为空";
}
else{
//(2)用户名必须在6-14位之间
if(nameArr.length>14||nameArr.length<6){
myUseNameSpan.innerHTML="用户名必须在6-14位之间";
}
else{
//(3)用户名只能有数字和字母组成,不能含有其它符号(正则表达式)
var zhengZeUseName=/^[a-zA-Z0-9]+$/;
var ok=zhengZeUseName.test(nameArr);
if(!ok){
myUseNameSpan.innerHTML="用户名只能有数字和字母组成";
}
else{
myUseNameSpan.innerHTML="";
}
}
}
}
// 确认密码失去焦点就验证是否和第一次是密码一致,错误在旁边span显示
var myConPassword=document.getElementById("conPassword");
var myConPasswordSpan=document.getElementById("conPasswordSpan");
myConPassword.onblur=function(){
//拿到之前的密码
var firstPassword=document.getElementById("password").value;
//console.log(firstPassword);
//验证是否和第一次是密码一致
if(firstPassword!=myConPassword.value){
myConPasswordSpan.innerHTML="密码和确认密码不一致";
}
else{
myConPasswordSpan.innerHTML="";
}
}
//用户名或者确认密码有焦点的时候,旁边的span为空
myUseName.onfocus=function(){
myUseNameSpan.innerHTML="";
}
myConPassword.onfocus=function(){
myConPasswordSpan.innerHTML="";
}
// 提交表单
// 上述都正确后再提交
//让用户名+确认密码都失去焦点,重新验证一下
//判断两个span是否为空
document.getElementById("tiJiaoButton").onclick=function(){
//先获取焦点才能再失去
myUseName.focus();//触发文本框的获取焦点事件
myUseName.blur();//触发文本框的失去焦点事件
// 验证密码,怎么验证密码?让确认密码失去焦点
myConPassword.focus();
myConPassword.blur();
console.log("用户名span的值="+myUseNameSpan.innerHTML);
console.log("确认密码span的值="+myConPasswordSpan.innerHTML);
//判断两个span是否为空
if(myUseNameSpan.innerHTML==""&&myConPasswordSpan.innerHTML==""){
//提交
document.getElementById("myForm").submit();
}
}
}
</script>
<!-- 思路
写出用户名+密码+确认密码+提交的表单
用户名失去焦点就检测是否正确,错误在旁边span显示
不为空+6-14位之间+数字和字母组成
确认密码失去焦点就验证是否和第一次是密码一致,错误在旁边span显示
提交表单
上述都正确后再提交
-->
<!-- 写出用户名+密码+确认密码+提交的表单 -->
<form id="myForm" action="http://localhost:8080/oa/save" >
用户名:<input type="text" name="useName" id="useName" /> <span id="usenameSpan"></span>
<br>
密 码 :<input type="password" name="password" id="password" />
<br>
确认密码:<input type="password" name="conPassword" id="conPassword" /> <span id="conPasswordSpan"></span>
<br>
<input type="button" value="提交" id="tiJiaoButton"/>
</form>
</body>
</html>