vendor/assets/javascripts/webshims/shims/form-validators.js in webshims-rails-1.14.6 vs vendor/assets/javascripts/webshims/shims/form-validators.js in webshims-rails-1.15.2

- old
+ new

@@ -259,12 +259,12 @@ addCustomValidityRule('partialPattern', function(elem, val, pattern){ pattern = pattern.partialPattern; if(!val || !pattern){return;} return !(new RegExp('(' + pattern + ')', 'i').test(val)); }, 'This format is not allowed here.'); - - if(!('tooShort' in ($('<input />').prop('validity') || {}))){ + + if($('<input />').prop('minLength') === undefined || !('tooShort' in ($('<input />').prop('validity') || {}))){ addCustomValidityRule('tooShort', function(elem, val){ var minlength; if(!val || val == elem.defaultValue || !(minlength = elem.getAttribute('minlength'))){return;} minlength = parseInt(minlength, 10); return minlength > 0 && minlength > val.length ? (webshims.validityMessages.__active || {}).tooShort || true : ''; @@ -279,13 +279,16 @@ data.grouprequired = {}; data.grouprequired.checkboxes = $( ((form = $.prop(elem, 'form')) && form[name]) || document.getElementsByName(name)).filter('[type="checkbox"]'); data.grouprequired.checkboxes .off('click.groupRequired') .on('click.groupRequired', function(){ - webshims.refreshCustomValidityRules(elem); + if((data.customMismatchedRule == 'grouprequired') == this.checked){ + $(elem).trigger('updatevalidation.webshims'); + } }) ; + data.grouprequired.checkboxes.not(elem).removeData('grouprequired'); } return !(data.grouprequired.checkboxes.filter(':checked:enabled')[0]); }, 'Please check one of these checkboxes.'); @@ -330,18 +333,18 @@ }); addCustomValidityRule('dependent', function(elem, val, data){ data = data.dependentValidation; if( !data ){return;} - var specialVal; var depFn = function(e){ var val = $.prop(data.masterElement, data["from-prop"]); - if(specialVal){ - val = $.inArray(val, specialVal) !== -1; - } - if(data.toggle){ + if(data.specialVal){ + val = $.inArray(val, data.specialVal) !== -1; + } if(data.toggle){ val = !val; + } else { + val = !!val; } $.prop( elem, data.prop, val); if(iValClasses && e){ $(elem).getShadowElement().filter(iValClasses).trigger('updatevalidation.webshims'); } @@ -368,18 +371,17 @@ } else if(!data["from-prop"]){ data["from-prop"] = 'value'; } if(data["from-prop"].indexOf('value:') === 0){ - specialVal = data["from-prop"].replace('value:', '').split('||'); + data.specialVal = data["from-prop"].replace('value:', '').split('||'); data["from-prop"] = 'value'; - } - + data = $.data(elem, 'dependentValidation', $.extend({_init: true}, dependentDefaults, data)); - if(data.prop !== "value" || specialVal){ + if(data.prop !== "value" || data.specialVal){ $(data.masterElement.type === 'radio' && getGroupElements(data.masterElement) || data.masterElement).on('change', depFn); } else { $(data.masterElement).on('change', function(){ webshims.refreshCustomValidityRules(elem); if(iValClasses){ @@ -391,11 +393,11 @@ } }); } } - if(data.prop == "value" && !specialVal){ + if(data.prop == "value" && !data.specialVal){ return ($.prop(data.masterElement, 'value') != val); } else { depFn(); return ''; } @@ -410,10 +412,9 @@ addCustomValidityRule('ajaxvalidate', function(elem, val, data){ if(!val || !data.ajaxvalidate){return;} var opts; if(!data.remoteValidate){ - webshims.loader.loadList(['jajax']); if(typeof data.ajaxvalidate == 'string'){ data.ajaxvalidate = {url: data.ajaxvalidate, depends: $([])}; } else { data.ajaxvalidate.depends = data.ajaxvalidate.depends ? $(typeof data.ajaxvalidate.depends == 'string' && data.ajaxvalidate.depends.split(' ') || data.ajaxvalidate.depends).map(getId) :