2016-11-07 14:16:20 +08:00
|
|
|
<template>
|
2018-06-25 12:48:49 +08:00
|
|
|
<Form ref="formCustom" :model="formCustom" :rules="ruleCustom" :label-width="80">
|
|
|
|
<FormItem label="Password" prop="passwd">
|
|
|
|
<Input type="password" v-model="formCustom.passwd"></Input>
|
|
|
|
</FormItem>
|
|
|
|
<FormItem label="Confirm" prop="passwdCheck">
|
|
|
|
<Input type="password" v-model="formCustom.passwdCheck"></Input>
|
|
|
|
</FormItem>
|
|
|
|
<FormItem label="Age" prop="age">
|
|
|
|
<Input type="text" v-model="formCustom.age" number></Input>
|
|
|
|
</FormItem>
|
|
|
|
<FormItem>
|
|
|
|
<Button type="primary" @click="handleSubmit('formCustom')">Submit</Button>
|
|
|
|
<Button type="ghost" @click="handleReset('formCustom')" style="margin-left: 8px">Reset</Button>
|
|
|
|
</FormItem>
|
|
|
|
<br><br>
|
|
|
|
<Icon class="ivu-load-loop" type="loading" size="30" color="#ff6600" />
|
|
|
|
<Icon type="ios-alert" size="30" color="#ff6600" />
|
|
|
|
<Icon class="ivu-load-loop" type="ios-sync" size="30" color="#ff6600" />
|
|
|
|
</Form>
|
2016-11-07 14:16:20 +08:00
|
|
|
</template>
|
|
|
|
<script>
|
|
|
|
export default {
|
|
|
|
data () {
|
2018-06-25 12:48:49 +08:00
|
|
|
const validatePass = (rule, value, callback) => {
|
|
|
|
if (value === '') {
|
|
|
|
callback(new Error('Please enter your password'));
|
|
|
|
} else {
|
|
|
|
if (this.formCustom.passwdCheck !== '') {
|
|
|
|
// 对第二个密码框单独验证
|
|
|
|
this.$refs.formCustom.validateField('passwdCheck');
|
|
|
|
}
|
|
|
|
callback();
|
|
|
|
}
|
|
|
|
};
|
|
|
|
const validatePassCheck = (rule, value, callback) => {
|
|
|
|
if (value === '') {
|
|
|
|
callback(new Error('Please enter your password again'));
|
|
|
|
} else if (value !== this.formCustom.passwd) {
|
|
|
|
callback(new Error('The two input passwords do not match!'));
|
|
|
|
} else {
|
|
|
|
callback();
|
|
|
|
}
|
|
|
|
};
|
|
|
|
const validateAge = (rule, value, callback) => {
|
|
|
|
if (!value) {
|
|
|
|
return callback(new Error('Age cannot be empty'));
|
|
|
|
}
|
|
|
|
// 模拟异步验证效果
|
|
|
|
setTimeout(() => {
|
|
|
|
if (!Number.isInteger(value)) {
|
|
|
|
callback(new Error('Please enter a numeric value'));
|
|
|
|
} else {
|
|
|
|
if (value < 18) {
|
|
|
|
callback(new Error('Must be over 18 years of age'));
|
|
|
|
} else {
|
|
|
|
callback();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}, 1000);
|
|
|
|
};
|
|
|
|
|
2016-11-07 14:16:20 +08:00
|
|
|
return {
|
2018-06-25 12:48:49 +08:00
|
|
|
formCustom: {
|
|
|
|
passwd: '',
|
|
|
|
passwdCheck: '',
|
|
|
|
age: ''
|
|
|
|
},
|
|
|
|
ruleCustom: {
|
|
|
|
passwd: [
|
|
|
|
{ validator: validatePass, trigger: 'blur' }
|
|
|
|
],
|
|
|
|
passwdCheck: [
|
|
|
|
{ validator: validatePassCheck, trigger: 'blur' }
|
|
|
|
],
|
|
|
|
age: [
|
|
|
|
{ validator: validateAge, trigger: 'blur' }
|
|
|
|
]
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
methods: {
|
|
|
|
handleSubmit (name) {
|
|
|
|
this.$refs[name].validate((valid) => {
|
|
|
|
if (valid) {
|
|
|
|
this.$Message.success('Success!');
|
|
|
|
} else {
|
|
|
|
this.$Message.error('Fail!');
|
|
|
|
}
|
|
|
|
})
|
|
|
|
},
|
|
|
|
handleReset (name) {
|
|
|
|
this.$refs[name].resetFields();
|
2016-11-08 17:53:04 +08:00
|
|
|
}
|
2016-11-07 14:16:20 +08:00
|
|
|
}
|
|
|
|
}
|
2017-03-01 15:23:12 +08:00
|
|
|
</script>
|