vxe-form怎么根据一个表单项的值校验另外一个表单项
时间: 2024-02-21 22:02:15 浏览: 136
在 vxe-form 中,可以通过设置校验规则的 validator 方法来实现根据一个表单项的值校验另外一个表单项。具体实现步骤如下:
1. 在 vxe-form 中对需要校验的表单项设置校验规则,例如:
```html
<vxe-form ref="form" :model.sync="formData">
<vxe-form-item prop="number1" label="数字1">
<vxe-input v-model="formData.number1"></vxe-input>
</vxe-form-item>
<vxe-form-item prop="number2" label="数字2">
<vxe-input v-model="formData.number2"></vxe-input>
</vxe-form-item>
<vxe-form-item prop="result" label="两数之和">
<vxe-input v-model="formData.result"></vxe-input>
<span slot="append">请填写两数之和</span>
<span slot="message" class="vxe-form-item--message"></span>
<span slot="errorMsg" class="vxe-form-item--error"></span>
</vxe-form-item>
</vxe-form>
```
2. 在校验规则中设置 validator 方法,该方法接收两个参数:rule 和 value,分别代表当前校验规则和当前校验的表单项的值。在 validator 方法中可以通过 this.$refs.form 取得整个表单组件实例,进而取得其他表单项的值进行校验。例如:
```js
validations: {
number1: [
{required: true, message: '数字1不能为空'}
],
number2: [
{required: true, message: '数字2不能为空'}
],
result: [
{required: true, message: '两数之和不能为空'},
{
validator: (rule, value) => {
const number1 = this.$refs.form.getFieldValue('number1')
const number2 = this.$refs.form.getFieldValue('number2')
if (number1 && number2 && value && Number(number1) + Number(number2) !== Number(value)) {
return new Error('两数之和不正确')
}
return true
}
}
]
}
```
在上面的校验规则中,对两数之和的校验规则中设置了 validator 方法,该方法通过 this.$refs.form.getFieldValue('number1') 和 this.$refs.form.getFieldValue('number2') 分别取得数字1和数字2的值,然后与当前校验的两数之和进行比较,如果不一致则返回错误信息。
这样就可以根据一个表单项的值校验另外一个表单项了。
阅读全文