css
form{ width: 600px; margin: 0 auto;}.item{ height: 60px; line-height: 60px;}.item label{ display: inline-block; width: 100px;}.item input{ height: 24px;}span{ color: red;}
html
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>会员注册</title> <link rel="stylesheet" href="css/register.css"></head><body> <form action="http://www.baidu.com" onsubmit="handleSubmit()" method="GET"> <h3>会员注册</h3> <div class="item"> <label for="">用户名:</label> <input type="text" name="userName" placeholder="请输入6~8个字符的用户名" id="userName" onblur="checkUserName()"> <span class="msg-user-name" id="msg"></span> </div> <div class="item"> <label for="">密码:</label> <input type="password" name="pwd" placeholder="请输入密码" id="password" onblur="checkPassword()"> <span class="msg-user-password"></span> </div> <div class="item"> <label for="">确认密码:</label> <input type="password" placeholder="请确认密码" id="repassword" onblur="checkRepassword()"> <span class="msg-user-repassword"></span> </div> <div class="item"> <label for="">Email:</label> <input type="email" placeholder="请输入邮箱号" id="email" onblur="checkEmail()"> <span class="msg-user-email"></span> </div> <div class="item"> <label for="">姓名:</label> <input type="text" name="name" > <span class="msg"></span> </div> <div class="item"> <label for="">性别:</label> <label><input type="radio" name="sex" value="男">男</label> <label><input type="radio" name="sex" value="女">女</label> <span class="msg-user-sex"></span> </div> <div class="item"> <label for="">出生日期:</label> <input type="date"> <span class="msg"></span> </div> <div class="item"> <label for="">验证码:</label> <input type="text" name="checkCode"> <img src="" alt=""> <span class="msg"></span> </div> <button type="submit">注册</button> </form> <script src="js/register.js"></script></body></html>
js
//验证用户名格式是否正确function checkUserName(){ //获取用户名输入的元素的值 let userName=document.querySelector('#userName').value; let reg = /^\w{6,8}$/; //6~8个字符 if(!reg.test(userName)){ //判断是否匹配 // console.log('不匹配'); document.querySelector(".msg-user-name").innerHTML="用户名格式不正确"; return false; }else{ document.querySelector(".msg-user-name").innerHTML=""; return true; }}//验证密码格式是否正确function checkPassword(){ //获取用户名输入的元素的值 let password=document.querySelector('#password').value; let reg = /^\w{6,8}$/; //6~8个字符 if(!reg.test(password)){ //判断是否匹配 document.querySelector(".msg-user-password").innerHTML="密码不符合要求"; return false; }else{ document.querySelector(".msg-user-password").innerHTML=""; return true; }}//验证密码是否正确function checkRepassword(){ //获取用户名输入的元素的值 let repassword=document.querySelector('#repassword').value; let password=document.querySelector('#password').value; if(repassword!=password){ //判断是否匹配 document.querySelector(".msg-user-repassword").innerHTML="两次输入密码不一致"; return false; }else{ document.querySelector(".msg-user-repassword").innerHTML=""; return true; }}//验证邮箱格式是否正确function checkEmail(){ //获取用户名输入的元素的值 let email=document.querySelector('#email').value; let reg=/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/; if(!reg.test(email)){ //判断是否匹配 document.querySelector(".msg-user-email").innerHTML="输入邮箱格式不正确"; return false; }else{ document.querySelector(".msg-user-email").innerHTML=""; return true; }}//处理表单提交function handleSubmit(){ //检查用户名是否合法 let u=checkUserName() let p=checkPassword() let rp=checkRepassword() let e=checkEmail() if(!(u&&p&&rp&&e)){ event.preventDefault(); }}
js变量声明
- 变量名命名规则和java类似:
1.1 不能使用关键字
1.2 只能使用unicode字符,数字,_,不能以数字开头
1.3 区分大小写
1.4 变量声明可以使用的关键字:let,var,const(常量)
运算符
js中的运算符和java基本一致,
特例:/,没有整数除法
==,只要求内容相同,对数据类型没有要求
===,不仅要求内容相同,数据类型还要相同
&&,||,返回能决定逻辑运算结果的表达式
表单验证案例
- 表单html实现
分析原型可知:这是一个表单,共9行,每行包括一个输入提示标签(label),一个输入接收元素(input),一个错误提示(span)
html结构可为:form>.item*9>label+input+span
调整中文
调整每个input的type及name属性
name属性的作用是提交表单的时候,这个name其实是参数名称
2.样式实现
表单居中
每行高度及垂直居中
每行label,input样式
失去焦点的时候验证格式
1.创建函数function checkUserName(){ //获取用户名这个输入元素的值 let userName = document.querySelector("#userName").value; //判断这个值的格式 let reg = /^\w{6,8}$/ //6-8个字符 if(!reg.test(userName)){//判断字符串是否和正则表达式匹配 document.querySelector(".msg-user-name").innerHTML = "用户名格式不正确" }else{ document.querySelector(".msg-user-name").innerHTML = "" }}
document.querySelector()按选择器的语法查找一个dom元素,
正则表达式
DOM元素的innerHTML属性用来读取或设置他的子元素的内容
2.绑定事件:在userName这个元素的onblur的属性中设置
onblur = “checkUserName()” ```
表单提交
当用户提交表单后,表单浏览器 默认会向action属性指定的服务器接口提交一个请求,如果action没有指定接口,就是当前的地址,会导致当前页面刷新
form元素的action属性指定处理吧表单提交的接口路径
method属性指定提交请求的方法,默认值是get
表单元素的name属性决定了提交表单的参数名称,应该和服务器端保持一致,否则服务器端就无法获取参数值
在表单提交事件中,可以 使用event.preventDefault()阻止表单提交
js在函数调用的时候,不检查参数是否匹配,所以在js里没有方法重载