var maalogin = { onDocumentReady: function() { MPTraceable.install({as: "maalogin", enable: true}); maalogin.enableValidation(); maalogin.mpOnClick(); }, mpOnClick: function() { let selector = "[data-maalogin]"; $("body").on("click", selector, maalogin.onClick); $(selector).css("cursor", "pointer"); }, onClick: function(e) { e.preventDefault(); e.stopPropagation(); var method = $(this).data("maalogin"); if (typeof maalogin[method] != "function") { console.info("Aborting. Could not find method maalogin." + method + "()"); return; } maalogin[method].call(this); }, toggleView: function() { const button = $(this); const icon = button.find("i"); const target = button.siblings("input"); if (target.attr("type") == "password") { target.attr("type", "text"); icon.removeClass(icon.data("icon")) .addClass(icon.data("alt-icon")); } else { target.attr("type", "password"); icon.removeClass(icon.data("alt-icon")) .addClass(icon.data("icon")); } }, enableValidation: function() { $("#maa-login form").validate({ errorPlacement: maalogin.validationErrorPlacement, rules: { username:{ required: true, pattern: /^\S*$/ }, password: { required: true, /* ----- disable preflight pattern pattern: /^\S*(?=\S{8,})(?=\S*\d)(?=\S*[a-z])(?=\S*[A-Z])\S*$/ ----- */ } }, messages: { username: { pattern: "Please omit spaces." }, password: { pattern: "Please try your password again." } } }) }, validationErrorPlacement: function(error, element) { if (element.attr("name") == "password") { error.insertAfter(element.closest(".input-group")); return; } error.insertAfter(element); } }; $(maalogin.onDocumentReady);