diff --git a/validation.js b/validation.js index 965fbf4..58ab741 100644 --- a/validation.js +++ b/validation.js @@ -263,7 +263,8 @@ class Validation { parseField(fieldInstance) { const nameAttrVal = fieldInstance.el.name - if (this.validateForBlank(fieldInstance)) { + if (!fieldInstance.optional && this.validateForBlank(fieldInstance) || + (fieldInstance.optional && fieldInstance.el.value !== '')) { switch (fieldInstance.el.type) { case 'checkbox': this.validateCheckbox(fieldInstance, nameAttrVal) @@ -290,7 +291,7 @@ class Validation { } validateForBlank(fieldInstance) { - if (!fieldInstance.el.value && !fieldInstance.optional) { + if (!fieldInstance.el.value) { this.addError( fieldInstance, (fieldInstance.labelText ? fieldInstance.labelText : `Field`) + ` is required.` @@ -397,6 +398,8 @@ class Validation { } else { for (const error of this.errors) { updateMarkup(error) + error.isValid = true + error.messageOutputted = false } this.errors.length = 0 }