Liliana797979

07. Form validation - js advanced

Feb 20th, 2022
1,207
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2.  
  3. function validate() {
  4.     let submitButton = document.getElementById('submit');
  5.     submitButton.addEventListener('click', validateFormHandler);
  6.     let isCompanyCheckbox = document.getElementById('company');
  7.     isCompanyCheckbox.addEventListener('change', onIsCompanyHandler);
  8.  
  9.     function validateFormHandler(e) {
  10.         e.preventDefault();
  11.         let usernameInput = document.getElementById('username');
  12.         let usernameRegex = /^[a-zA-Z0-9]{3,20}$/;
  13.         let usernameIsValid = usernameRegex.test(usernameInput.value);
  14.         setBorder(usernameInput, usernameIsValid);
  15.  
  16.         let emailInput = document.getElementById('email');
  17.         let emailRegex = /^.*@.*\..*$/
  18.         let emailIsValid = emailRegex.test(emailInput.value);
  19.         setBorder(emailInput, emailIsValid);
  20.  
  21.         let passwordRegex = /^\w{5,15}$/;
  22.         let passwordInput = document.getElementById('password');
  23.         let confirmPasswordInput = document.getElementById('confirm-password');
  24.         let passwordIsValid = passwordRegex.test(passwordInput.value);
  25.         let passwordsAreOk = passwordIsValid &&
  26.             passwordInput.value === confirmPasswordInput.value;
  27.         setBorder(passwordInput, passwordsAreOk);
  28.         setBorder(confirmPasswordInput, passwordsAreOk);
  29.  
  30.         let companyNumberIsValid = false;
  31.         let isCompanyCheckbox = document.getElementById('company');
  32.         if(isCompanyCheckbox.checked) {
  33.             let companyNumberInput = document.getElementById('companyNumber');
  34.             if(companyNumberInput.value.trim() !== '' && !isNaN(Number(companyNumberInput.value))) {
  35.                 let companyNumber = Number(companyNumberInput.value);
  36.                 if(companyNumber >= 1000 && companyNumber <= 9999) {
  37.                     companyNumberIsValid = true;
  38.                 }
  39.             }
  40.  
  41.             setBorder(companyNumberInput, companyNumberIsValid);
  42.         }
  43.  
  44.         let validDiv = document.getElementById('valid');
  45.         let mainInputsAreValid = usernameIsValid && emailIsValid && passwordsAreOk
  46.         let companyInfoIsValid = !isCompanyCheckbox.checked || (isCompanyCheckbox.checked && companyNumberIsValid);
  47.         let shouldShowValidDiv = mainInputsAreValid && companyInfoIsValid;
  48.         validDiv.style.display = shouldShowValidDiv ? 'block' : 'none';
  49.     }
  50.  
  51.     function onIsCompanyHandler(e) {
  52.         let companyInfoFieldset = document.getElementById('companyInfo');
  53.         companyInfoFieldset.style.display = e.target.checked ? 'block' : 'none';
  54.     }
  55.  
  56.     function setBorder(element, isValid) {
  57.         if (isValid) {
  58.             element.style.setProperty('border', 'none');
  59.         } else {
  60.             element.style.setProperty('border', '2px solid red');
  61.         }
  62.     }
  63. }
Advertisement
Add Comment
Please, Sign In to add comment