regist.html 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <base href="/bookstore/">
  5. <meta charset="UTF-8" />
  6. <title>爱扣钉会员注册页面</title>
  7. <link type="text/css" rel="stylesheet" href="static/css/style.css" />
  8. <link rel="stylesheet" href="static/css/register.css" />
  9. <style type="text/css">
  10. .login_form {
  11. height: 420px;
  12. margin-top: 25px;
  13. }
  14. </style>
  15. <script src="static/script/vue.js"></script>
  16. <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
  17. </head>
  18. <body>
  19. <div id="app">
  20. <div id="login_header">
  21. <a href="index.html">
  22. <img class="logo_img" alt="" src="static/img/logo.gif" />
  23. </a>
  24. </div>
  25. <div class="login_banner">
  26. <div class="register_form">
  27. <h1>注册爱扣钉会员</h1>
  28. <form action="regist" method="post" @submit="checkAll">
  29. <div class="form-item">
  30. <div>
  31. <label>用户名称:</label>
  32. <input type="text" placeholder="请输入用户名" name="username" v-model="username" @blur="checkUsername"/>
  33. </div>
  34. <span class="errMess" :style="usernameCss">{{usernameErrMsg}}</span>
  35. </div>
  36. <div class="form-item">
  37. <div>
  38. <label>用户密码:</label>
  39. <input type="password" placeholder="请输入密码" name="password" v-model="password" @blur="checkPassword"/>
  40. </div>
  41. <span class="errMess" :style="passwordCss">{{passwordErrMsg}}</span>
  42. </div>
  43. <div class="form-item">
  44. <div>
  45. <label>确认密码:</label>
  46. <input type="password" placeholder="请输入确认密码" v-model="confirmPassword" @blur="checkConfirmPassword"/>
  47. </div>
  48. <span class="errMess" :style="confirmPasswordCss">{{confirmPasswordErrMsg}}</span>
  49. </div>
  50. <div class="form-item">
  51. <div>
  52. <label>用户邮箱:</label>
  53. <input type="text" placeholder="请输入邮箱" name="email" v-model="email" @blur="checkEmail"/>
  54. </div>
  55. <span class="errMess" :style="emailCss">{{emailErrMsg}}</span>
  56. </div>
  57. <div class="form-item">
  58. <div>
  59. <label>验证码:</label>
  60. <div class="verify">
  61. <input type="text" name="code" v-model="code" placeholder="" />
  62. <img style="width: 150px; height: 40px;" :src="KaptchaServlet" @click="changeCode" alt="" />
  63. </div>
  64. </div>
  65. <span class="errMess"></span>
  66. </div>
  67. <button class="btn">注册</button>
  68. </form>
  69. </div>
  70. </div>
  71. <div id="bottom">
  72. <span>
  73. 爱扣钉书城.Copyright &copy;2015
  74. </span>
  75. </div>
  76. </div>
  77. <script>
  78. new Vue({
  79. "el":"#app",
  80. "data":{
  81. "KaptchaServlet":"KaptchaServlet",
  82. "username":"",
  83. "usernameErrMsg":"用户名应为6~16位数组和字母组成",
  84. "usernameCss":{"visibility":"hidden"},
  85. "password":"",
  86. "passwordErrMsg":"密码的长度至少为8位",
  87. "passwordCss":{"visibility":"hidden"},
  88. "confirmPassword":"",
  89. "confirmPasswordErrMsg":"密码两次输入不一致",
  90. "confirmPasswordCss":{"visibility":"hidden"},
  91. "email":"",
  92. "emailErrMsg":"请输入正确的邮箱格式",
  93. "emailCss":{"visibility":"hidden"},
  94. },
  95. "methods":{
  96. changeCode: function (){
  97. this.KaptchaServlet = "KaptchaServlet?time"+new Date();
  98. },
  99. checkUsername: function () {
  100. let usernameFlag = false;
  101. this.usernameCss = {"visibility": "visible"}
  102. var reg = /^[a-zA-Z0-9]{6,16}$/;
  103. let f = reg.test(this.username);
  104. //console.log(f)
  105. if (f) {
  106. this.usernameErrMsg = "√"
  107. //校验用户名是否可用:发送异步请求给UserServlet
  108. axios({
  109. "method": "POST",
  110. "url": "user",
  111. "params": {
  112. "method": "checkUserName", //checkUserName
  113. "username": this.username
  114. }
  115. }).then(response => {
  116. //1. 判断响应的json中的flag
  117. if (response.data.flag) {
  118. //用户名可用
  119. this.usernameErrMsg = "√"
  120. } else {
  121. //用户名不可用
  122. this.usernameErrMsg = response.data.message
  123. }
  124. usernameFlag = response.data.flag
  125. })
  126. } else {
  127. this.usernameErrMsg = "用户名应为6~16位数组和字母组成"
  128. return usernameFlag;
  129. }
  130. },
  131. checkPassword(){
  132. this.passwordCss={"visibility":"visible"};
  133. var reg=/^[a-zA-Z0-9]{8,}$/;
  134. if(reg.test(this.password)){
  135. this.passwordErrMsg="√";
  136. return true;
  137. }else{
  138. this.passwordErrMsg="密码的长度至少为8位";
  139. return false;
  140. }
  141. },
  142. checkConfirmPassword(){
  143. this.confirmPasswordCss={"visibility":"visible"};
  144. if(this.confirmPassword==""){
  145. this.confirmPasswordErrMsg="密码两次输入不一致";
  146. return false;
  147. }
  148. if(this.password==this.confirmPassword){
  149. this.confirmPasswordErrMsg="√";
  150. return true;
  151. }else{
  152. this.confirmPasswordErrMsg="密码两次输入不一致";
  153. return false;
  154. }
  155. },
  156. checkEmail(){
  157. this.emailCss={"visibility":"visible"};
  158. var reg=/^[a-zA-Z0-9_\.-]+@([a-zA-Z0-9-]+[\.]{1})+[a-zA-Z]+$/;
  159. if(reg.test(this.email)){
  160. this.emailErrMsg="√"
  161. return true;
  162. }else{
  163. this.emailErrMsg="请输入正确的邮箱格式"
  164. return false;
  165. }
  166. },
  167. checkAll(){
  168. if(!(this.checkPassword()&this.checkConfirmPassword()&this.checkEmail())){
  169. event.preventDefault()
  170. }
  171. }
  172. }
  173. })
  174. </script>
  175. </body>
  176. </html>