mirror of
https://gitee.com/vant-contrib/vant.git
synced 2025-04-06 03:57:59 +08:00
feat(Form): stop validation when a rule fails
This commit is contained in:
parent
48d2f64aba
commit
dd11f17693
@ -151,41 +151,51 @@ export default createComponent({
|
|||||||
resolve();
|
resolve();
|
||||||
}
|
}
|
||||||
|
|
||||||
Promise.all(
|
let message;
|
||||||
this.rules.map(rule => {
|
|
||||||
if (rule.required && this.formValueEmpty) {
|
this.rules
|
||||||
return Promise.resolve(rule.message);
|
.reduce(
|
||||||
|
(promise, rule) =>
|
||||||
|
promise.then(() => {
|
||||||
|
if (message) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (rule.required && this.formValueEmpty) {
|
||||||
|
({ message } = rule);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (rule.validator) {
|
||||||
|
const returnVal = rule.validator(this.formValue);
|
||||||
|
|
||||||
|
if (returnVal === false) {
|
||||||
|
({ message } = rule);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isPromise(returnVal)) {
|
||||||
|
return returnVal.then(result => {
|
||||||
|
if (result === false) {
|
||||||
|
({ message } = rule);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
Promise.resolve()
|
||||||
|
)
|
||||||
|
.then(() => {
|
||||||
|
if (message) {
|
||||||
|
this.validateMessage = message;
|
||||||
|
resolve({
|
||||||
|
name: this.name,
|
||||||
|
message,
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
resolve();
|
||||||
}
|
}
|
||||||
|
});
|
||||||
if (rule.validator) {
|
|
||||||
const returnVal = rule.validator(this.formValue);
|
|
||||||
|
|
||||||
if (returnVal === false) {
|
|
||||||
return Promise.resolve(rule.message);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isPromise(returnVal)) {
|
|
||||||
return returnVal.then(
|
|
||||||
result => result === false && rule.message
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return Promise.resolve();
|
|
||||||
})
|
|
||||||
).then(messages => {
|
|
||||||
messages = messages.filter(item => item);
|
|
||||||
|
|
||||||
if (messages.length) {
|
|
||||||
this.validateMessage = messages[0];
|
|
||||||
resolve({
|
|
||||||
name: this.name,
|
|
||||||
messages,
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
resolve();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user