From b1785277a2092f7d8d209616faa32570cfed24aa Mon Sep 17 00:00:00 2001 From: Ryan Cramer Date: Tue, 11 Aug 2020 07:07:31 -0400 Subject: [PATCH] Fix issue processwire/processwire-issues#1133 --- .../InputfieldPassword/InputfieldPassword.js | 23 +++++++++++-------- .../InputfieldPassword.min.js | 2 +- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/wire/modules/Inputfield/InputfieldPassword/InputfieldPassword.js b/wire/modules/Inputfield/InputfieldPassword/InputfieldPassword.js index a9b4b971..0939b884 100644 --- a/wire/modules/Inputfield/InputfieldPassword/InputfieldPassword.js +++ b/wire/modules/Inputfield/InputfieldPassword/InputfieldPassword.js @@ -14,6 +14,7 @@ jQuery(document).ready(function($) { var $scores = $wrapScores.children(); var requirements = $wrapScores.attr('data-requirements').split(' '); var minlength = parseInt($input.attr('data-minlength')); + var inputOldEvent; var options = { banMode: $input.attr('data-banMode'), strengthScaleFactor: parseFloat($input.attr('data-factor')), @@ -21,13 +22,14 @@ jQuery(document).ready(function($) { }; if($inputOld.length) { - $input.attr('disabled', 'disabled'); - $inputOld.on('keyup', function() { + $input.attr('disabled', 'disabled'); + inputOldEvent = function() { if($(this).val().length > 0) { - $inputOld.off('keyup'); + $inputOld.off('keyup input change blur', inputOldEvent); $input.removeAttr('disabled'); } - }); + }; + $inputOld.on('keyup input change blur', inputOldEvent); } if($confirm.length) $confirm.attr('disabled', 'disabled'); @@ -46,25 +48,26 @@ jQuery(document).ready(function($) { var fail = false; var requirement = requirements[n]; var $requirement = $inputfield.find('.pass-require-' + requirement); + var re; if(requirement == 'letter') { - var re = XRegExp("\\p{L}"); + re = XRegExp("\\p{L}"); if(!re.test(val)) fail = true; } else if(requirement == 'upper') { - var re = XRegExp("\\p{Lu}"); + re = XRegExp("\\p{Lu}"); if(!re.test(val)) fail = true; } else if(requirement == 'lower') { - var re = XRegExp("\\p{Ll}"); + re = XRegExp("\\p{Ll}"); if(!re.test(val)) fail = true; } else if(requirement == 'digit') { - var re = XRegExp("\\p{N}"); + re = XRegExp("\\p{N}"); if(!re.test(val)) fail = true; } else if(requirement == 'other') { - var re = XRegExp("\\p{P}"); + re = XRegExp("\\p{P}"); var rx = XRegExp("\\p{S}"); if(!re.test(val) && !rx.test(val)) fail = true; } else if(requirement == 'space') { - var re = XRegExp("\\p{Z}"); + re = XRegExp("\\p{Z}"); if(!re.test(val)) fail = true; } else if(requirement == 'minlength') { if(len < minlength) fail = true; diff --git a/wire/modules/Inputfield/InputfieldPassword/InputfieldPassword.min.js b/wire/modules/Inputfield/InputfieldPassword/InputfieldPassword.min.js index 1a66fc42..99d34185 100644 --- a/wire/modules/Inputfield/InputfieldPassword/InputfieldPassword.min.js +++ b/wire/modules/Inputfield/InputfieldPassword/InputfieldPassword.min.js @@ -1 +1 @@ -jQuery(document).ready(function(c){var a=c("input.InputfieldPasswordComplexify");a.each(function(){var k=c(this);var d=k.closest(".Inputfield");var j=d.find(".InputfieldPasswordConfirm");var h=j.next(".pass-confirm");var i=d.find("input.InputfieldPasswordOld");var l=k.siblings(".pass-scores");var e=k.siblings(".pass-percent");var m=l.children();var g=l.attr("data-requirements").split(" ");var f=parseInt(k.attr("data-minlength"));var n={banMode:k.attr("data-banMode"),strengthScaleFactor:parseFloat(k.attr("data-factor")),minimumChars:f};if(i.length){k.attr("disabled","disabled");i.on("keyup",function(){if(c(this).val().length>0){i.off("keyup");k.removeAttr("disabled")}})}if(j.length){j.attr("disabled","disabled")}k.complexify(n,function(o,p){var u=null;var s=k.val();var v=s.length;var x=0;if(v>0){for(var r=0;r("+Math.floor(p)+"%)")}if(j.val().length){j.change()}});k.on("change",function(){var o=c(this).val();if(o.length>0){k.attr("required","required");j.attr("required","required")}else{if(!c(this).closest(".InputfieldStateRequired").length){k.removeAttr("required");j.removeAttr("required")}}});j.on("keyup change",function(){var r=k.val();var q=c(this).val();var o=null;var p=k.closest("p").removeClass("pass-matches");if(q.length==0){o=h.children(".confirm-pending")}else{if(r==q){o=h.children(".confirm-yes");p.addClass("pass-matches")}else{if(r.indexOf(q)===0){o=h.children(".confirm-qty");o.children("span").html(q.length+"/"+r.length)}else{o=h.children(".confirm-no")}}}if(o){o.addClass("on").siblings(".on").removeClass("on")}})});var b=c(".InputfieldPassword").find("input[autocomplete='new-password']");if(b.length){setTimeout(function(){b.each(function(){if(c(this).val().length<1||c(this).attr("value").length>0){return}c(this).val("").trigger("keyup").change().closest(".Inputfield").removeClass("InputfieldStateChanged")})},1000)}}); \ No newline at end of file +jQuery(document).ready(function($){var $inputs=$("input.InputfieldPasswordComplexify");$inputs.each(function(){var $input=$(this);var $inputfield=$input.closest(".Inputfield");var $confirm=$inputfield.find(".InputfieldPasswordConfirm");var $confirms=$confirm.next(".pass-confirm");var $inputOld=$inputfield.find("input.InputfieldPasswordOld");var $wrapScores=$input.siblings(".pass-scores");var $percent=$input.siblings(".pass-percent");var $scores=$wrapScores.children();var requirements=$wrapScores.attr("data-requirements").split(" ");var minlength=parseInt($input.attr("data-minlength"));var inputOldEvent;var options={banMode:$input.attr("data-banMode"),strengthScaleFactor:parseFloat($input.attr("data-factor")),minimumChars:minlength};if($inputOld.length){$input.attr("disabled","disabled");inputOldEvent=function(){if($(this).val().length>0){$inputOld.off("keyup input change blur",inputOldEvent);$input.removeAttr("disabled")}};$inputOld.on("keyup input change blur",inputOldEvent)}if($confirm.length)$confirm.attr("disabled","disabled");$input.complexify(options,function(valid,complexity){var $on=null;var val=$input.val();var len=val.length;var numGood=0;if(len>0){for(var n=0;n("+Math.floor(complexity)+"%)")}if($confirm.val().length){$confirm.change()}});$input.on("change",function(){var val=$(this).val();if(val.length>0){$input.attr("required","required");$confirm.attr("required","required")}else if(!$(this).closest(".InputfieldStateRequired").length){$input.removeAttr("required");$confirm.removeAttr("required")}});$confirm.on("keyup change",function(){var val1=$input.val();var val2=$(this).val();var $on=null;var $p=$input.closest("p").removeClass("pass-matches");if(val2.length==0){$on=$confirms.children(".confirm-pending")}else if(val1==val2){$on=$confirms.children(".confirm-yes");$p.addClass("pass-matches")}else if(val1.indexOf(val2)===0){$on=$confirms.children(".confirm-qty");$on.children("span").html(val2.length+"/"+val1.length)}else{$on=$confirms.children(".confirm-no")}if($on)$on.addClass("on").siblings(".on").removeClass("on")})});var $ffinputs=$(".InputfieldPassword").find("input[autocomplete='new-password']");if($ffinputs.length){setTimeout(function(){$ffinputs.each(function(){if($(this).val().length<1||$(this).attr("value").length>0)return;$(this).val("").trigger("keyup").change().closest(".Inputfield").removeClass("InputfieldStateChanged")})},1e3)}}); \ No newline at end of file