2017-05-26 63 views
0

以下功能驗證一個表單字段:如何防止在else if語句中重複賦值?

validateFields() { 
    let invalidFields = [] 
    utils.eachDeep(this.schema, field => { 
    if (!field.validation) return // don't validate 
    else if (field.validation.isRequired && !field.value) { 
     field.errorMessage = 'Required field error' 
     invalidFields.push(field) 
    } else if (field.validation.minLength && field.value.length < field.validation.minLength) { 
     field.errorMessage = 'Minimum length error' 
     invalidFields.push(field) 
    } else { 
     // no errors 
     field.errorMessage = '' 
    } 
    }) 

    invalidFields.length > 0 
    ? this.isFormValid = false 
    : this.isFormValid = true 
} 

正如你可以看到我在每一個else if語句重複invalidFields.push(field)。我怎樣才能防止這一點?

+0

我不認爲你可以給該錯誤信息是不同的。其他兩個人有什麼共同點或父母嗎? –

+0

如果在第一次遇到無效字段時可以返回false,並且使用類似every()的方法進行迭代,則甚至不需要'invalidFields'。 –

+0

@le_m我需要一種方法來檢查所有的字段驗證後,表單是否無效。 – alex

回答

2

,如果你只是想刪除其他內推()如果塊,你可以這樣做:

validateFields() { 
    let invalidFields = [] 
    utils.eachDeep(this.schema, field => { 
    field.errorMessage = ''; 

    if (!field.validation) return // don't validate 
    else if (field.validation.isRequired && !field.value) { 
     field.errorMessage = 'Required field error' 
    } else if (field.validation.minLength && field.value.length < field.validation.minLength) { 
     field.errorMessage = 'Minimum length error' 
    } 
    if(field.errorMessage){ 
     invalidFields.push(field) 
    } 
    }) 

    invalidFields.length > 0 
    ? this.isFormValid = false 
    : this.isFormValid = true 
} 
+0

天才! (或者我可能太愚蠢了。) – alex