/** * Apply password strength meter to registration form */ jQuery(document).ready(function($) { $('input[type=password]').each(function(i,el){ el = $(el); if (!el.data('strength')) return; // Detect changes, set a timeout for calling the check var form = el.closest('form'); if (!form.find('.PasswordStrength')) return; else { var pwFieldWidth = el.width(); form.find('.PasswordStrength').css('width', pwFieldWidth); } var timeout = 0; el.on('keyup', function(e){ clearTimeout(timeout); timeout = setTimeout(function(){ checkPasswordStrength(el, form); }, 100); }); if (el.val()) checkPasswordStrength(el, form); }); function checkPasswordStrength(el, form) { var username = form.find('input[name=Name]').val(); if (!username) username = gdn.definition('Username', ''); var pscore = gdn.password(el.val(), username); // update password strength var PasswordStrength = form.find('.PasswordStrength'); if (PasswordStrength) { PasswordStrength.attr('class', 'PasswordStrength'); var score = pscore.score; var passfail = pscore.pass ? 'Pass' : 'Fail'; PasswordStrength.addClass('Score-'+score); PasswordStrength.addClass(passfail); var scoretext = pscore.reason; if (PasswordStrength.find('.StrengthText')) PasswordStrength.find('.StrengthText').html(scoretext); } } });