register.js 6.3 KB

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