css

  1. form{
  2. width: 600px;
  3. margin: 0 auto;
  4. }
  5. .item{
  6. height: 60px;
  7. line-height: 60px;
  8. }
  9. .item label{
  10. display: inline-block;
  11. width: 100px;
  12. }
  13. .item input{
  14. height: 24px;
  15. }
  16. span{
  17. color: red;
  18. }

html

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>会员注册</title>
  7. <link rel="stylesheet" href="css/register.css">
  8. </head>
  9. <body>
  10. <form action="http://www.baidu.com" onsubmit="handleSubmit()" method="GET">
  11. <h3>会员注册</h3>
  12. <div class="item">
  13. <label for="">用户名:</label>
  14. <input type="text" name="userName" placeholder="请输入6~8个字符的用户名" id="userName" onblur="checkUserName()">
  15. <span class="msg-user-name" id="msg"></span>
  16. </div>
  17. <div class="item">
  18. <label for="">密码:</label>
  19. <input type="password" name="pwd" placeholder="请输入密码" id="password" onblur="checkPassword()">
  20. <span class="msg-user-password"></span>
  21. </div>
  22. <div class="item">
  23. <label for="">确认密码:</label>
  24. <input type="password" placeholder="请确认密码" id="repassword" onblur="checkRepassword()">
  25. <span class="msg-user-repassword"></span>
  26. </div>
  27. <div class="item">
  28. <label for="">Email:</label>
  29. <input type="email" placeholder="请输入邮箱号" id="email" onblur="checkEmail()">
  30. <span class="msg-user-email"></span>
  31. </div>
  32. <div class="item">
  33. <label for="">姓名:</label>
  34. <input type="text" name="name" >
  35. <span class="msg"></span>
  36. </div>
  37. <div class="item">
  38. <label for="">性别:</label>
  39. <label><input type="radio" name="sex" value="男"></label>
  40. <label><input type="radio" name="sex" value="女"></label>
  41. <span class="msg-user-sex"></span>
  42. </div>
  43. <div class="item">
  44. <label for="">出生日期:</label>
  45. <input type="date">
  46. <span class="msg"></span>
  47. </div>
  48. <div class="item">
  49. <label for="">验证码:</label>
  50. <input type="text" name="checkCode">
  51. <img src="" alt="">
  52. <span class="msg"></span>
  53. </div>
  54. <button type="submit">注册</button>
  55. </form>
  56. <script src="js/register.js"></script>
  57. </body>
  58. </html>

js

  1. //验证用户名格式是否正确
  2. function checkUserName(){
  3. //获取用户名输入的元素的值
  4. let userName=document.querySelector('#userName').value;
  5. let reg = /^\w{6,8}$/; //6~8个字符
  6. if(!reg.test(userName)){ //判断是否匹配
  7. // console.log('不匹配');
  8. document.querySelector(".msg-user-name").innerHTML="用户名格式不正确";
  9. return false;
  10. }else{
  11. document.querySelector(".msg-user-name").innerHTML="";
  12. return true;
  13. }
  14. }
  15. //验证密码格式是否正确
  16. function checkPassword(){
  17. //获取用户名输入的元素的值
  18. let password=document.querySelector('#password').value;
  19. let reg = /^\w{6,8}$/; //6~8个字符
  20. if(!reg.test(password)){ //判断是否匹配
  21. document.querySelector(".msg-user-password").innerHTML="密码不符合要求";
  22. return false;
  23. }else{
  24. document.querySelector(".msg-user-password").innerHTML="";
  25. return true;
  26. }
  27. }
  28. //验证密码是否正确
  29. function checkRepassword(){
  30. //获取用户名输入的元素的值
  31. let repassword=document.querySelector('#repassword').value;
  32. let password=document.querySelector('#password').value;
  33. if(repassword!=password){ //判断是否匹配
  34. document.querySelector(".msg-user-repassword").innerHTML="两次输入密码不一致";
  35. return false;
  36. }else{
  37. document.querySelector(".msg-user-repassword").innerHTML="";
  38. return true;
  39. }
  40. }
  41. //验证邮箱格式是否正确
  42. function checkEmail(){
  43. //获取用户名输入的元素的值
  44. let email=document.querySelector('#email').value;
  45. let reg=/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
  46. if(!reg.test(email)){ //判断是否匹配
  47. document.querySelector(".msg-user-email").innerHTML="输入邮箱格式不正确";
  48. return false;
  49. }else{
  50. document.querySelector(".msg-user-email").innerHTML="";
  51. return true;
  52. }
  53. }
  54. //处理表单提交
  55. function handleSubmit(){
  56. //检查用户名是否合法
  57. let u=checkUserName()
  58. let p=checkPassword()
  59. let rp=checkRepassword()
  60. let e=checkEmail()
  61. if(!(u&&p&&rp&&e)){
  62. event.preventDefault();
  63. }
  64. }

js变量声明

  1. 变量名命名规则和java类似:
    1.1 不能使用关键字
    1.2 只能使用unicode字符,数字,_,不能以数字开头
    1.3 区分大小写
    1.4 变量声明可以使用的关键字:let,var,const(常量)

    运算符

    js中的运算符和java基本一致,
    特例:/,没有整数除法
    ==,只要求内容相同,对数据类型没有要求
    ===,不仅要求内容相同,数据类型还要相同
    &&,||,返回能决定逻辑运算结果的表达式

    表单验证案例

  2. 表单html实现
    分析原型可知:这是一个表单,共9行,每行包括一个输入提示标签(label),一个输入接收元素(input),一个错误提示(span)
    html结构可为:form>.item*9>label+input+span
    调整中文
    调整每个input的type及name属性
    name属性的作用是提交表单的时候,这个name其实是参数名称
    2.样式实现
    表单居中
    每行高度及垂直居中
    每行label,input样式

    失去焦点的时候验证格式

    1.创建函数
    1. function checkUserName(){
    2. //获取用户名这个输入元素的值
    3. let userName = document.querySelector("#userName").value;
    4. //判断这个值的格式
    5. let reg = /^\w{6,8}$/ //6-8个字符
    6. if(!reg.test(userName)){//判断字符串是否和正则表达式匹配
    7. document.querySelector(".msg-user-name").innerHTML = "用户名格式不正确"
    8. }else{
    9. document.querySelector(".msg-user-name").innerHTML = ""
    10. }
    11. }
    document.querySelector()按选择器的语法查找一个dom元素,
    正则表达式
    DOM元素的innerHTML属性用来读取或设置他的子元素的内容
    2.绑定事件:在userName这个元素的onblur的属性中设置
    onblur = “checkUserName()” ```

    表单提交

    当用户提交表单后,表单浏览器 默认会向action属性指定的服务器接口提交一个请求,如果action没有指定接口,就是当前的地址,会导致当前页面刷新
    form元素的action属性指定处理吧表单提交的接口路径
    method属性指定提交请求的方法,默认值是get
    表单元素的name属性决定了提交表单的参数名称,应该和服务器端保持一致,否则服务器端就无法获取参数值
    在表单提交事件中,可以 使用event.preventDefault()阻止表单提交
    js在函数调用的时候,不检查参数是否匹配,所以在js里没有方法重载