mirror of
https://gitee.com/vant-contrib/vant.git
synced 2025-04-06 03:57:59 +08:00
feat(Form): add submit、failed event
This commit is contained in:
parent
9d8cf7f8d3
commit
70ed34aa24
@ -51,7 +51,6 @@ export default createComponent({
|
|||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
focused: false,
|
focused: false,
|
||||||
validateError: false,
|
|
||||||
validateMessage: '',
|
validateMessage: '',
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
@ -59,6 +58,10 @@ export default createComponent({
|
|||||||
watch: {
|
watch: {
|
||||||
value() {
|
value() {
|
||||||
this.$nextTick(this.adjustSize);
|
this.$nextTick(this.adjustSize);
|
||||||
|
|
||||||
|
if (this.validateMessage) {
|
||||||
|
this.validateMessage = '';
|
||||||
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -133,7 +136,6 @@ export default createComponent({
|
|||||||
|
|
||||||
return !this.rules.some(rule => {
|
return !this.rules.some(rule => {
|
||||||
if (rule.required && !this.value) {
|
if (rule.required && !this.value) {
|
||||||
this.validateError = true;
|
|
||||||
this.validateMessage = rule.message;
|
this.validateMessage = rule.message;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -395,7 +397,7 @@ export default createComponent({
|
|||||||
titleClass={[bem('label', labelAlign), this.labelClass]}
|
titleClass={[bem('label', labelAlign), this.labelClass]}
|
||||||
arrowDirection={this.arrowDirection}
|
arrowDirection={this.arrowDirection}
|
||||||
class={bem({
|
class={bem({
|
||||||
error: this.error || this.validateError,
|
error: this.error || this.validateMessage,
|
||||||
[`label-${labelAlign}`]: labelAlign,
|
[`label-${labelAlign}`]: labelAlign,
|
||||||
'min-height': this.type === 'textarea' && !this.autosize,
|
'min-height': this.type === 'textarea' && !this.autosize,
|
||||||
})}
|
})}
|
||||||
|
@ -42,7 +42,9 @@ export default {
|
|||||||
},
|
},
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
onSubmit() {},
|
onSubmit(values) {
|
||||||
|
console.log(values);
|
||||||
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
@ -17,12 +17,28 @@ export default createComponent({
|
|||||||
},
|
},
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
|
// @exposed-api
|
||||||
|
validate() {
|
||||||
|
return this.fields.map(item => item.validate()).every(item => item);
|
||||||
|
},
|
||||||
|
|
||||||
|
getFormData() {
|
||||||
|
return this.fields.reduce((form, field) => {
|
||||||
|
form[field.name] = field.value;
|
||||||
|
return form;
|
||||||
|
}, {});
|
||||||
|
},
|
||||||
|
|
||||||
onSubmit(event) {
|
onSubmit(event) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
|
|
||||||
const results = this.fields.map(item => item.validate());
|
const valid = this.validate();
|
||||||
|
|
||||||
console.log(results);
|
if (valid) {
|
||||||
|
this.$emit('submit', this.getFormData());
|
||||||
|
} else {
|
||||||
|
this.$emit('failed');
|
||||||
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user