diff --git a/media/system/js/validate-uncompressed.js b/media/system/js/validate-uncompressed.js index 8f62d9f6bf270..b0a9cdfc1ea98 100644 --- a/media/system/js/validate-uncompressed.js +++ b/media/system/js/validate-uncompressed.js @@ -11,7 +11,8 @@ * @since 1.5 */ var JFormValidator = function() { - var $, handlers, inputEmail, custom, + "use strict"; + var handlers, inputEmail, custom, setHandler = function(name, fn, en) { en = (en === '') ? true : en; @@ -38,7 +39,13 @@ var JFormValidator = function() { }, handleResponse = function(state, $el) { + // Get a label var $label = $el.data('label'); + if($label === undefined){ + $label = findLabel($el.attr('id'), $el.data('form')); + $el.data('label', $label); + } + // Set the element and its label (if exists) invalid state if (state === false) { $el.addClass('invalid').attr('aria-invalid', 'true'); @@ -124,10 +131,11 @@ var JFormValidator = function() { }, attachToForm = function(form) { - var inputFields = []; + var inputFields = [], + $form = jQuery(form); // Iterate through the form object and attach the validate method to all input fields. - jQuery(form).find('input, textarea, select, fieldset, button').each(function() { - var $el = $(this), id = $el.attr('id'), tagName = $el.prop("tagName").toLowerCase(); + $form.find('input, textarea, select, fieldset, button').each(function() { + var $el = jQuery(this), tagName = $el.prop("tagName").toLowerCase(); if ($el.hasClass('required')) { $el.attr('aria-required', 'true').attr('required', 'required'); } @@ -146,15 +154,14 @@ var JFormValidator = function() { $el.get(0).type = 'email'; } } - $el.data('label', findLabel(id, form)); + $el.data('form', $form); inputFields.push($el); } }); - $(form).data('inputfields', inputFields); + $form.data('inputfields', inputFields); }, initialize = function() { - $ = jQuery.noConflict(); handlers = {}; custom = custom || {}; @@ -165,20 +172,20 @@ var JFormValidator = function() { })(); // Default handlers setHandler('username', function(value, element) { - regex = new RegExp("[\<|\>|\"|\'|\%|\;|\(|\)|\&]", "i"); + var regex = new RegExp("[\<|\>|\"|\'|\%|\;|\(|\)|\&]", "i"); return !regex.test(value); }); setHandler('password', function(value, element) { - regex = /^\S[\S ]{2,98}\S$/; + var regex = /^\S[\S ]{2,98}\S$/; return regex.test(value); }); setHandler('numeric', function(value, element) { - regex = /^(\d|-)?(\d|,)*\.?\d*$/; + var regex = /^(\d|-)?(\d|,)*\.?\d*$/; return regex.test(value); }); setHandler('email', function(value, element) { value = punycode.toASCII(value); - regex = /^[a-zA-Z0-9.!#$%&’*+\/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/; + var regex = /^[a-zA-Z0-9.!#$%&’*+\/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/; return regex.test(value); }); // Attach to forms with class 'form-validate' diff --git a/media/system/js/validate.js b/media/system/js/validate.js index 0470369c62b5d..34b27b12e1e68 100644 --- a/media/system/js/validate.js +++ b/media/system/js/validate.js @@ -1 +1 @@ -var JFormValidator=function(){var e,t,n,r,i=function(e,n,r){r=r===""?true:r;t[e]={enabled:r,exec:n}},s=function(e,t){var n,r=jQuery(t);if(!e){return false}n=r.find("#"+e+"-lbl");if(n.length){return n}n=r.find('label[for="'+e+'"]');if(n.length){return n}return false},o=function(e,t){var n=t.data("label");if(e===false){t.addClass("invalid").attr("aria-invalid","true");if(n){n.addClass("invalid").attr("aria-invalid","true")}}else{t.removeClass("invalid").attr("aria-invalid","false");if(n){n.removeClass("invalid").attr("aria-invalid","false")}}},u=function(e){var n=jQuery(e),r,i;if(n.attr("disabled")){o(true,n);return true}if(n.attr("required")||n.hasClass("required")){r=n.prop("tagName").toLowerCase();if(r==="fieldset"&&(n.hasClass("radio")||n.hasClass("checkboxes"))){if(!n.find("input:checked").length){o(false,n);return false}}else if(!n.val()||n.hasClass("placeholder")||n.attr("type")==="checkbox"&&!n.is(":checked")){o(false,n);return false}}i=n.attr("class")&&n.attr("class").match(/validate-([a-zA-Z0-9\_\-]+)/)?n.attr("class").match(/validate-([a-zA-Z0-9\_\-]+)/)[1]:"";if(i===""){o(true,n);return true}if(i&&i!=="none"&&t[i]&&n.val()){if(t[i].exec(n.val(),n)!==true){o(false,n);return false}}o(true,n);return true},a=function(e){var t=true,n,i,s,o,a;jQuery.each(jQuery(e).find("input, textarea, select, fieldset, button"),function(e,n){if(u(n)===false){t=false}});jQuery.each(r,function(e,n){if(n.exec()!==true){t=false}});if(!t){i=Joomla.JText._("JLIB_FORM_FIELD_INVALID");s=jQuery("input.invalid, textarea.invalid, select.invalid, fieldset.invalid, button.invalid");o={};o.error=[];for(n=0;n|\"|'|%|;|(|)|&]","i");return!regex.test(e)});i("password",function(e,t){regex=/^\S[\S ]{2,98}\S$/;return regex.test(e)});i("numeric",function(e,t){regex=/^(\d|-)?(\d|,)*\.?\d*$/;return regex.test(e)});i("email",function(e,t){e=punycode.toASCII(e);regex=/^[a-zA-Z0-9.!#$%&’*+\/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/;return regex.test(e)});jQuery("form.form-validate").each(function(){f(this)})};l();return{isValid:a,validate:u,setHandler:i,attachToForm:f,custom:r}};document.formvalidator=null;jQuery(function(){document.formvalidator=new JFormValidator}) +var JFormValidator=function(){"use strict";var e,t,n,r=function(t,n,r){r=r===""?!0:r,e[t]={enabled:r,exec:n}},i=function(e,t){var n,r=jQuery(t);return e?(n=r.find("#"+e+"-lbl"),n.length?n:(n=r.find('label[for="'+e+'"]'),n.length?n:!1)):!1},s=function(e,t){var n=t.data("label");n===undefined&&(n=i(t.attr("id"),t.data("form")),t.data("label",n)),e===!1?(t.addClass("invalid").attr("aria-invalid","true"),n&&n.addClass("invalid").attr("aria-invalid","true")):(t.removeClass("invalid").attr("aria-invalid","false"),n&&n.removeClass("invalid").attr("aria-invalid","false"))},o=function(t){var n=jQuery(t),r,i;if(n.attr("disabled"))return s(!0,n),!0;if(n.attr("required")||n.hasClass("required")){r=n.prop("tagName").toLowerCase();if(r==="fieldset"&&(n.hasClass("radio")||n.hasClass("checkboxes"))){if(!n.find("input:checked").length)return s(!1,n),!1}else if(!n.val()||n.hasClass("placeholder")||n.attr("type")==="checkbox"&&!n.is(":checked"))return s(!1,n),!1}return i=n.attr("class")&&n.attr("class").match(/validate-([a-zA-Z0-9\_\-]+)/)?n.attr("class").match(/validate-([a-zA-Z0-9\_\-]+)/)[1]:"",i===""?(s(!0,n),!0):i&&i!=="none"&&e[i]&&n.val()&&e[i].exec(n.val(),n)!==!0?(s(!1,n),!1):(s(!0,n),!0)},u=function(e){var t=!0,r,i,s,u,a;jQuery.each(jQuery(e).find("input, textarea, select, fieldset, button"),function(e,n){o(n)===!1&&(t=!1)}),jQuery.each(n,function(e,n){n.exec()!==!0&&(t=!1)});if(!t){i=Joomla.JText._("JLIB_FORM_FIELD_INVALID"),s=jQuery("input.invalid, textarea.invalid, select.invalid, fieldset.invalid, button.invalid"),u={},u.error=[];for(r=0;r|\"|'|%|;|(|)|&]","i");return!n.test(e)}),r("password",function(e,t){var n=/^\S[\S ]{2,98}\S$/;return n.test(e)}),r("numeric",function(e,t){var n=/^(\d|-)?(\d|,)*\.?\d*$/;return n.test(e)}),r("email",function(e,t){e=punycode.toASCII(e);var n=/^[a-zA-Z0-9.!#$%&’*+\/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/;return n.test(e)}),jQuery("form.form-validate").each(function(){a(this)})};return f(),{isValid:u,validate:o,setHandler:r,attachToForm:a,custom:n}};document.formvalidator=null,jQuery(function(){document.formvalidator=new JFormValidator}); \ No newline at end of file