register.js 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
  1. const btnRegister = document.querySelector('.btn-register');
  2. const btnLoginPage = document.querySelector('.btn-login');
  3. const btnUserProfile = document.querySelector('.btn-userProfile');
  4. const btnLogout = document.querySelector('.btn-logout');
  5. const registerPassword = document.querySelector('#register #password');
  6. const btnLoginPage_d = document.querySelector('.login-top .btn-login');
  7. const btnUserProfile_d = document.querySelector('.login-top .btn-userProfile');
  8. const btnLogout_d= document.querySelector('.login-top .btn-logout');
  9. $('.psd_visible').hide();
  10. $('.psd_invisible').click(function(){
  11. $(this).prev().toggle();
  12. $(this).toggle();
  13. $(this).parent().children(':first').attr('type', 'text');
  14. })
  15. $('.psd_visible').click(function(){
  16. $(this).toggle();
  17. $(this).next().toggle();
  18. $(this).parent().children(':first').attr('type', 'password');
  19. })
  20. registerPassword.addEventListener('keyup', registerByEnter);
  21. btnRegister.addEventListener('click', register);
  22. function registerByEnter(e) {
  23. if (e.keyCode === 13) {
  24. e.preventDefault();
  25. console.log('login!');
  26. register();
  27. }
  28. };
  29. function validateEmail(email) {
  30. const re = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
  31. if(re.test(String(email).toLowerCase()) === false) {
  32. $('#register [name = "email"]').addClass('error');
  33. if( !$('.error-text').length ) {
  34. let msg = '請輸入正確E-mail';
  35. if (lang == 'en') {
  36. msg = 'Please enter valid Email format.';
  37. }
  38. $('input.error').after('<p class="error-text" set-lan="html:errorEmail">' + msg + '</p>');
  39. }
  40. } else {
  41. $('#register [name = "email"]').removeClass('error');
  42. $('.error-text').remove();
  43. }
  44. return re.test(String(email).toLowerCase());
  45. }
  46. function validatePassword(psd) {
  47. if(psd.length >=4) {
  48. $('#register [name = "password"]').removeClass('error');
  49. $('.error-text').remove();
  50. return true;
  51. } else {
  52. $('#register [name = "password"]').addClass('error');
  53. if( !$('.error-text').length ) {
  54. $('input.error').after('<p class="error-text" set-lan="html:errorPsd">密碼至少為4個字元</p>');
  55. }
  56. return false;
  57. }
  58. }
  59. function validateConfirmPsd(psd1, psd2) {
  60. if(psd1 == psd2) {
  61. $('#register #confirm_password').removeClass('error');
  62. $('.error-text').remove();
  63. return true;
  64. } else {
  65. $('#register #confirm_password').addClass('error');
  66. if( !$('.error-text').length ) {
  67. $('input.error').after('<p class="error-text" set-lan="html:errorConsistentPsd">密碼輸入需一致</p>');
  68. }
  69. return false;
  70. }
  71. }
  72. function validateConfirmName() {
  73. let username = $('#register [name = "username"]').val();
  74. if(!/.*[\u4e00-\u9fa5]+.*$/.test(username)) {
  75. $('#register [name = "username"]').removeClass('error');
  76. $('.error-text').remove();
  77. return true;
  78. } else {
  79. $('#register [name = "username"]').addClass('error');
  80. if( !$('.error-text').length ) {
  81. $('input.error').after('<p class="error-text" set-lan="html:errorUsername">請輸入英文字元或數字</p>');
  82. }
  83. return false;
  84. }
  85. }
  86. function register() {
  87. let userName = $('#register [name = "username"]').val();
  88. let email = $('#register [name = "email"]').val();
  89. let password = $('#register [name = "password"]').val();
  90. let confirm_psd = $('#register #confirm_password').val();
  91. // 註冊資料檢查
  92. if (username == '' || password == '') {
  93. let title = "註冊失敗";
  94. let text = "請先輸入您的帳號/密碼";
  95. if (lang == 'en') {
  96. title = "Login Failed!";
  97. text = "Please enter your username and password";
  98. }
  99. Swal.fire({
  100. title: title,
  101. icon: 'error',
  102. text: text,
  103. confirmButtonColor: '#3085d6',
  104. });
  105. return;
  106. }
  107. if (/.*[\u4e00-\u9fa5]+.*$/.test(username)) {
  108. let title = "字元有誤";
  109. let text = "名稱僅得包含英文及數字";
  110. if (lang == 'en') {
  111. title = "Invalid username!";
  112. text = "Please enter valid username";
  113. }
  114. Swal.fire({
  115. title: title,
  116. icon: 'error',
  117. text: text,
  118. confirmButtonColor: '#3085d6',
  119. });
  120. return;
  121. }
  122. if(userName && validateConfirmName() && validateEmail(email) && validatePassword(password) && validateConfirmPsd(password, confirm_psd)) {
  123. JsLoadingOverlay.show({
  124. "overlayBackgroundColor": "#666666",
  125. "overlayOpacity": 0.6,
  126. "spinnerIcon": "ball-circus",
  127. "spinnerColor": "#000",
  128. "spinnerSize": "3x",
  129. "overlayIDName": "overlay",
  130. "spinnerIDName": "spinner",
  131. "offsetX": 0,
  132. "offsetY": 0,
  133. "containerID": null,
  134. "lockScroll": false,
  135. "overlayZIndex": 10,
  136. "spinnerZIndex": 11
  137. });
  138. let userObj = {
  139. username: userName,
  140. email,
  141. password
  142. }
  143. console.log(userObj);
  144. const headers = {
  145. "accept": "application/json",
  146. "Content-Type": "application/json"
  147. }
  148. axios({
  149. method: 'post',
  150. url: 'https://www.choozmo.com:8887/register',
  151. headers: headers,
  152. data: userObj
  153. }).then(res => {
  154. console.log(res.data.msg);
  155. JsLoadingOverlay.hide();
  156. let text;
  157. if (lang == 'en') {
  158. text = res.data.msg.eng;
  159. } else {
  160. text = res.data.msg.zh;
  161. }
  162. Swal.fire({
  163. icon: 'info',
  164. text: text,
  165. confirmButtonColor: '#3085d6',
  166. });
  167. }).catch(err => {
  168. console.log(err);
  169. var title = "錯誤處理中,請稍後再試";
  170. if (lang == 'en') { // 英文版訊息
  171. title = "Oops! Errors occurred. Please try it later!"
  172. }
  173. Swal.fire({
  174. title: title,
  175. icon: 'error',
  176. confirmButtonColor: '#3085d6',
  177. });
  178. })
  179. }
  180. }
  181. function loginControl() {
  182. btnLoginPage.style.display = 'block';
  183. btnLogout.style.display = 'none';
  184. btnUserProfile.style.display = 'none';
  185. btnLoginPage_d.style.display = 'block';
  186. btnLogout_d.style.display = 'none';
  187. btnUserProfile_d.style.display = 'none';
  188. }
  189. loginControl();