Built files from Bizgaze WebServer
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

passwordrequirement.js 6.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. (function ($) {
  2. $.fn.extend({
  3. passwordRequirements: function (options) {
  4. // options for the plugin
  5. var defaults = {
  6. numCharacters: 8,
  7. useLowercase: true,
  8. useUppercase: true,
  9. useNumbers: true,
  10. useSpecial: true,
  11. infoMessage: '',
  12. style: "dark", // Style Options light or dark
  13. fadeTime: 100 // FadeIn / FadeOut in milliseconds
  14. };
  15. options = $.extend(defaults, options);
  16. return this.each(function () {
  17. var o = options;
  18. o.infoMessage = '';
  19. // Add Variables for the li elements
  20. var numCharactersUI = '<li class="pr-numCharacters"><span class="fa fa-times"></span>Min 8 characters in Length</li>',
  21. useLowercaseUI = '',
  22. useUppercaseUI = '',
  23. useNumbersUI = '',
  24. useSpecialUI = '';
  25. // Check if the options are checked
  26. if (o.useLowercase === true) {
  27. useLowercaseUI = '<li class="pr-useLowercase"><span class="fa fa-times"></span>Lowercase letter (a-z)</li>';
  28. }
  29. if (o.useUppercase === true) {
  30. useUppercaseUI = '<li class="pr-useUppercase"><span class="fa fa-times"></span>Uppercase letter (A-Z)</li>';
  31. }
  32. if (o.useNumbers === true) {
  33. useNumbersUI = '<li class="pr-useNumbers"><span class="fa fa-times"></span>Number (i.e. 0-9)</li> ';
  34. }
  35. if (o.useSpecial === true) {
  36. useSpecialUI = '<li class="pr-useSpecial"><span class="fa fa-times"></span>Special character (!,@,#,etc...)</li>';
  37. }
  38. // Append password hint div
  39. var messageDiv = '<div id="pr-box"><i></i><div id="pr-box-inner"><ul>' + numCharactersUI + useLowercaseUI + useUppercaseUI + useNumbersUI + useSpecialUI + '</ul></div></div>';
  40. // Set campletion vatiables
  41. var numCharactersDone = true,
  42. useLowercaseDone = true,
  43. useUppercaseDone = true,
  44. useNumbersDone = true,
  45. useSpecialDone = true;
  46. // Show Message reusable function
  47. var showMessage = function () {
  48. if (numCharactersDone === false || useLowercaseDone === false || useUppercaseDone === false || useNumbersDone === false || useSpecialDone === false) {
  49. $(".pr-password").each(function () {
  50. // Find the position of element
  51. var posH = $(this).offset().top,
  52. itemH = $(this).innerHeight(),
  53. totalH = posH + itemH,
  54. itemL = $(this).offset().left;
  55. // Append info box tho the body
  56. $("body .showpwsdreq").html(messageDiv);
  57. $("#pr-box").addClass(o.style)
  58. .fadeIn(o.fadeTime);
  59. });
  60. }
  61. };
  62. // Show password hint
  63. $(this).on("focus", function () {
  64. showMessage();
  65. });
  66. // Delete Message reusable function
  67. var deleteMessage = function () {
  68. var targetMessage = $("#pr-box");
  69. targetMessage.fadeOut(o.fadeTime, function () {
  70. $(this).remove();
  71. });
  72. };
  73. // Show / Delete Message when completed requirements function
  74. var checkCompleted = function () {
  75. if (numCharactersDone === true && useLowercaseDone === true && useUppercaseDone === true && useNumbersDone === true && useSpecialDone === true) {
  76. deleteMessage();
  77. } else {
  78. showMessage();
  79. }
  80. };
  81. // Show password hint
  82. $(this).on("blur", function () {
  83. deleteMessage();
  84. });
  85. // Show or Hide password hint based on user's event
  86. // Set variables
  87. var lowerCase = new RegExp('[a-z]'),
  88. upperCase = new RegExp('[A-Z]'),
  89. numbers = new RegExp('[0-9]'),
  90. specialCharacter = new RegExp('[!,%,&,@,#,$,^,*,?,_,~]');
  91. // Show or Hide password hint based on keyup
  92. $(this).on("keyup focus", function () {
  93. var thisVal = $(this).val();
  94. checkCompleted();
  95. // Check # of characters
  96. if (thisVal.length >= o.numCharacters) {
  97. // console.log("good numCharacters");
  98. $(".pr-numCharacters span").addClass("pr-ok fa-check").removeClass("fa-times");
  99. $(".pr-numCharacters").addClass("pr-ok");
  100. numCharactersDone = true;
  101. } else {
  102. // console.log("bad numCharacters");
  103. $(".pr-numCharacters span").removeClass("pr-ok fa-check").addClass("fa-times");
  104. $(".pr-numCharacters").removeClass("pr-ok");
  105. numCharactersDone = false;
  106. }
  107. // lowerCase meet requirements
  108. if (o.useLowercase === true) {
  109. if (thisVal.match(lowerCase)) {
  110. // console.log("good lowerCase");
  111. $(".pr-useLowercase span").addClass("pr-ok fa-check").removeClass("fa-times");
  112. $(".pr-useLowercase").addClass("pr-ok");
  113. useLowercaseDone = true;
  114. } else {
  115. // console.log("bad lowerCase");
  116. $(".pr-useLowercase span").removeClass("pr-ok fa-check").addClass("fa-times");
  117. $(".pr-useLowercase").removeClass("pr-ok");
  118. useLowercaseDone = false;
  119. }
  120. }
  121. // upperCase meet requirements
  122. if (o.useUppercase === true) {
  123. if (thisVal.match(upperCase)) {
  124. // console.log("good upperCase");
  125. $(".pr-useUppercase span").addClass("pr-ok fa-check").removeClass("fa-times");
  126. $(".pr-useUppercase").addClass("pr-ok");
  127. useUppercaseDone = true;
  128. } else {
  129. // console.log("bad upperCase");
  130. $(".pr-useUppercase span").removeClass("pr-ok fa-check").addClass("fa-times");
  131. $(".pr-useUppercase").removeClass("pr-ok");
  132. useUppercaseDone = false;
  133. }
  134. }
  135. // upperCase meet requirements
  136. if (o.useNumbers === true) {
  137. if (thisVal.match(numbers)) {
  138. // console.log("good numbers");
  139. $(".pr-useNumbers span").addClass("pr-ok fa-check").removeClass("fa-times");
  140. $(".pr-useNumbers").addClass("pr-ok");
  141. useNumbersDone = true;
  142. } else {
  143. // console.log("bad numbers");
  144. $(".pr-useNumbers span").removeClass("pr-ok fa-check").addClass("fa-times");
  145. $(".pr-useNumbers").removeClass("pr-ok");
  146. useNumbersDone = false;
  147. }
  148. }
  149. // upperCase meet requirements
  150. if (o.useSpecial === true) {
  151. if (thisVal.match(specialCharacter)) {
  152. // console.log("good specialCharacter");
  153. $(".pr-useSpecial span").addClass("pr-ok fa-check").removeClass("fa-times");
  154. $(".pr-useSpecial").addClass("pr-ok");
  155. useSpecialDone = true;
  156. } else {
  157. // console.log("bad specialCharacter");
  158. $(".pr-useSpecial span").removeClass("pr-ok fa-check").addClass("fa-times");
  159. $(".pr-useSpecial").removeClass("pr-ok");
  160. useSpecialDone = false;
  161. }
  162. }
  163. });
  164. });
  165. }
  166. });
  167. })(jQuery);