Advertisement
Guest User

Untitled

a guest
Jul 23rd, 2019
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.39 KB | None | 0 0
  1. const PASSWORD_VALIDATIONS = {
  2. oneUpper: '[A-Z]{1,}',
  3. oneLower: '[a-z]{1,}',
  4. oneNumber: '[0-9]{1,}',
  5. oneSymbol: '(\\-|\\_|\\.|\\@){1,}',
  6. min8: '([0-9]|[a-z]|[A-Z]|\\-|\\_|\\.|\\@){8,}'
  7. };
  8. let passedValidations = {
  9. oneUpper: false,
  10. oneLower: false,
  11. oneNumber: false,
  12. oneSymbol: false,
  13. min8: false
  14. };
  15.  
  16. //password input listener
  17. [PASSWORD INPUT].on('keyup', validateNewPassword);
  18.  
  19.  
  20.  
  21. function validateNewPassword(){
  22. event.preventDefault();
  23. event.stopPropagation();
  24.  
  25. const VAL = 0;//password input
  26. const $PROGRESS = 0;//progress bar div
  27. const TOTAL_RULES = Object.keys(passedValidations).length;
  28.  
  29. const PARENT_WIDTH_IN_PX = $PROGRESS.parent().css('width').replace('px', '');
  30. const CURRENT_WIDTH_IN_PX = $PROGRESS.css('width').replace('px', '');
  31.  
  32. const INCREASE_PERCENT = PARENT_WIDTH_IN_PX / TOTAL_RULES;
  33. const INCREASED_WIDTH = parseFloat(CURRENT_WIDTH_IN_PX) + parseFloat(INCREASE_PERCENT);
  34. const NEW_WIDTH = VAL === ''
  35. ? 0
  36. : INCREASED_WIDTH > PARENT_WIDTH_IN_PX
  37. ? PARENT_WIDTH_IN_PX
  38. : INCREASED_WIDTH;
  39.  
  40. let exp = null;
  41. let color = getPasswordProgressColor(CURRENT_WIDTH_IN_PX, PARENT_WIDTH_IN_PX);
  42.  
  43. for(let rule in PASSWORD_VALIDATIONS){
  44. exp = new RegExp(PASSWORD_VALIDATIONS[rule]);
  45.  
  46. if(exp.test(VAL)){
  47. if(!passedValidations[rule]){
  48. passedValidations[rule] = true;
  49. $PROGRESS.css({
  50. backgroundColor: color,
  51. width: NEW_WIDTH+ 'px'
  52. });
  53. }
  54. }else{
  55. if(passedValidations[rule]){
  56. passedValidations[rule] = false;
  57. let width = parseFloat(CURRENT_WIDTH_IN_PX) - parseFloat(INCREASE_PERCENT);
  58. const REDUCED_WIDTH = width < 0 ? 0 : width;
  59. $PROGRESS.css({
  60. backgroundColor: color,
  61. width: REDUCED_WIDTH+ 'px'
  62. });
  63. }
  64. }
  65. }
  66. }
  67.  
  68. function getPasswordProgressColor(currentWidth, parentWidth){
  69. const HALF = parentWidth / 2;
  70. if(currentWidth < HALF){
  71. return 'rgb(255, 0, 0)';
  72. }else if(currentWidth > HALF){
  73. return 'rgb(0, 250, 0)';
  74. }else{
  75. return 'rgb(255, 110, 0)';
  76. }
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement