diff --git a/src/definitions/behaviors/form.js b/src/definitions/behaviors/form.js index 6eb083835..464ac58af 100644 --- a/src/definitions/behaviors/form.js +++ b/src/definitions/behaviors/form.js @@ -234,7 +234,7 @@ $.fn.form = function(parameters) { ; module.verbose('Checking if form is valid'); $.each(validation, function(fieldName, field) { - if( !( module.validate.field(field) ) ) { + if( !( module.validate.field(field, fieldName) ) ) { allValid = false; } }); @@ -433,17 +433,20 @@ $.fn.form = function(parameters) { }, validation: function($field) { var - rules + fieldValidation, + identifier ; if(!validation) { return false; } $.each(validation, function(fieldName, field) { - if( module.get.field(field.identifier)[0] == $field[0] ) { - rules = field; + identifier = field.identifier || fieldName; + if( module.get.field(identifier)[0] == $field[0] ) { + field.identifier = identifier; + fieldValidation = field; } }); - return rules || false; + return fieldValidation || false; }, value: function (field) { var @@ -590,9 +593,9 @@ $.fn.form = function(parameters) { }, remove: { - prompt: function(field) { + prompt: function(identifier) { var - $field = module.get.field(field.identifier), + $field = module.get.field(identifier), $fieldGroup = $field.closest($group), $prompt = $fieldGroup.children(selector.prompt) ; @@ -600,7 +603,7 @@ $.fn.form = function(parameters) { .removeClass(className.error) ; if(settings.inline && $prompt.is(':visible')) { - module.verbose('Removing prompt for field', field); + module.verbose('Removing prompt for field', identifier); if(settings.transition && $.fn.transition !== undefined && $module.transition('is supported')) { $prompt.transition(settings.transition + ' out', settings.duration, function() { $prompt.remove(); @@ -746,36 +749,41 @@ $.fn.form = function(parameters) { }, // takes a validation object and returns whether field passes validation - field: function(field) { + field: function(field, fieldName) { var - $field = module.get.field(field.identifier), + identifier = field.identifier || fieldName, + $field = module.get.field(identifier), fieldValid = true, fieldErrors = [] ; + if(!field.identifier) { + module.debug('Using field name as identifier', identifier); + field.identifier = identifier; + } if($field.prop('disabled')) { - module.debug('Field is disabled. Skipping', field.identifier); + module.debug('Field is disabled. Skipping', identifier); fieldValid = true; } else if(field.optional && $.trim($field.val()) === ''){ - module.debug('Field is optional and empty. Skipping', field.identifier); + module.debug('Field is optional and empty. Skipping', identifier); fieldValid = true; } else if(field.rules !== undefined) { $.each(field.rules, function(index, rule) { - if( module.has.field(field.identifier) && !( module.validate.rule(field, rule) ) ) { - module.debug('Field is invalid', field.identifier, rule.type); + if( module.has.field(identifier) && !( module.validate.rule(field, rule) ) ) { + module.debug('Field is invalid', identifier, rule.type); fieldErrors.push(module.get.prompt(rule)); fieldValid = false; } }); } if(fieldValid) { - module.remove.prompt(field, fieldErrors); + module.remove.prompt(identifier, fieldErrors); settings.onValid.call($field); } else { formErrors = formErrors.concat(fieldErrors); - module.add.prompt(field.identifier, fieldErrors); + module.add.prompt(identifier, fieldErrors); settings.onInvalid.call($field, fieldErrors); return false; }