Skip to content

Commit d1b6dea

Browse files
authored
fix(form): support mix of shorthand and full object rules
It was not possible to mix shorthand and full object rules together (only the first one validatedc and then crashes at JS console).
1 parent 686529b commit d1b6dea

File tree

1 file changed

+14
-26
lines changed

1 file changed

+14
-26
lines changed

src/definitions/behaviors/form.js

Lines changed: 14 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -313,13 +313,6 @@ $.fn.form = function(parameters) {
313313
bracketedRule: function(rule) {
314314
return (rule.type && rule.type.match(settings.regExp.bracket));
315315
},
316-
shorthandFields: function(fields) {
317-
var
318-
fieldKeys = Object.keys(fields),
319-
firstRule = fields[fieldKeys[0]]
320-
;
321-
return module.is.shorthandRules(firstRule);
322-
},
323316
// duck type rule test
324317
shorthandRules: function(rules) {
325318
return (typeof rules == 'string' || Array.isArray(rules));
@@ -523,15 +516,19 @@ $.fn.form = function(parameters) {
523516
fullFields = {}
524517
;
525518
$.each(fields, function(name, rules) {
526-
if(typeof rules == 'string') {
527-
rules = [rules];
519+
if (!Array.isArray(rules) && typeof rules === 'object') {
520+
fullFields[name] = rules;
521+
} else {
522+
if (typeof rules == 'string') {
523+
rules = [rules];
524+
}
525+
fullFields[name] = {
526+
rules: []
527+
};
528+
$.each(rules, function (index, rule) {
529+
fullFields[name].rules.push({type: rule});
530+
});
528531
}
529-
fullFields[name] = {
530-
rules: []
531-
};
532-
$.each(rules, function(index, rule) {
533-
fullFields[name].rules.push({ type: rule });
534-
});
535532
});
536533
return fullFields;
537534
},
@@ -599,7 +596,7 @@ $.fn.form = function(parameters) {
599596
}
600597
else {
601598
// 2.x
602-
if(parameters.fields && module.is.shorthandFields(parameters.fields)) {
599+
if(parameters.fields) {
603600
parameters.fields = module.get.fieldsFromShorthand(parameters.fields);
604601
}
605602
settings = $.extend(true, {}, $.fn.form.settings, parameters);
@@ -873,16 +870,7 @@ $.fn.form = function(parameters) {
873870
module.debug('Adding rules', newValidation.rules, validation);
874871
},
875872
fields: function(fields) {
876-
var
877-
newValidation
878-
;
879-
if(fields && module.is.shorthandFields(fields)) {
880-
newValidation = module.get.fieldsFromShorthand(fields);
881-
}
882-
else {
883-
newValidation = fields;
884-
}
885-
validation = $.extend({}, validation, newValidation);
873+
validation = $.extend({}, validation, module.get.fieldsFromShorthand(fields));
886874
},
887875
prompt: function(identifier, errors, internal) {
888876
var

0 commit comments

Comments
 (0)