Browse Source

#2579 make form identifiers optional

pull/3019/head
Jack Lukic 9 years ago
parent
commit
3b109b2ed6
1 changed files with 24 additions and 16 deletions
  1. 40
      src/definitions/behaviors/form.js

40
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;
}

Loading…
Cancel
Save