register.js 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  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 register() {
  73. let userName = $('#register [name = "username"]').val();
  74. let email = $('#register [name = "email"]').val();
  75. let password = $('#register [name = "password"]').val();
  76. let confirm_psd = $('#register #confirm_password').val();
  77. // 註冊資料檢查
  78. if (username == '' || password == '') {
  79. let title = "註冊失敗";
  80. let text = "請先輸入您的帳號/密碼";
  81. if (lang == 'en') {
  82. title = "Login Failed!";
  83. text = "Please enter your username and password";
  84. }
  85. Swal.fire({
  86. title: title,
  87. icon: 'error',
  88. text: text,
  89. confirmButtonColor: '#3085d6',
  90. });
  91. return;
  92. }
  93. if(userName && validateEmail(email) && validatePassword(password) && validateConfirmPsd(password, confirm_psd)) {
  94. JsLoadingOverlay.show({
  95. "overlayBackgroundColor": "#666666",
  96. "overlayOpacity": 0.6,
  97. "spinnerIcon": "ball-circus",
  98. "spinnerColor": "#000",
  99. "spinnerSize": "3x",
  100. "overlayIDName": "overlay",
  101. "spinnerIDName": "spinner",
  102. "offsetX": 0,
  103. "offsetY": 0,
  104. "containerID": null,
  105. "lockScroll": false,
  106. "overlayZIndex": 10,
  107. "spinnerZIndex": 11
  108. });
  109. let userObj = {
  110. username: userName,
  111. email,
  112. password
  113. }
  114. console.log(userObj);
  115. const headers = {
  116. "accept": "application/json",
  117. "Content-Type": "application/json"
  118. }
  119. axios({
  120. method: 'post',
  121. url: 'https://www.choozmo.com:8887/register',
  122. headers: headers,
  123. data: userObj
  124. }).then(res => {
  125. console.log(res.data.msg);
  126. JsLoadingOverlay.hide();
  127. let text;
  128. if (lang == 'en') {
  129. text = res.data.msg.eng;
  130. } else {
  131. text = res.data.msg.zh;
  132. }
  133. Swal.fire({
  134. icon: 'info',
  135. text: text,
  136. confirmButtonColor: '#3085d6',
  137. });
  138. }).catch(err => {
  139. console.log(err);
  140. var title = "錯誤處理中,請稍後再試";
  141. if (lang == 'en') { // 英文版訊息
  142. title = "Oops! Errors occurred. Please try it later!"
  143. }
  144. Swal.fire({
  145. title: title,
  146. icon: 'error',
  147. confirmButtonColor: '#3085d6',
  148. });
  149. })
  150. }
  151. }
  152. function loginControl() {
  153. btnLoginPage.style.display = 'block';
  154. btnLogout.style.display = 'none';
  155. btnUserProfile.style.display = 'none';
  156. btnLoginPage_d.style.display = 'block';
  157. btnLogout_d.style.display = 'none';
  158. btnUserProfile_d.style.display = 'none';
  159. }
  160. loginControl();