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) :