antd +vue3 a-form表单验证(校验)规则填写数值后提示仍然存在的问题 嵌套

今天写表单收集时,发现验证规则失效,效果如下图,所属网络验证规则可以呈现出来,而ip的验证规则却不行
在这里插入图片描述
属性定义如下图。开始IP和结束IP都在**fromState.findIps[]**里,导致嵌套
在这里插入图片描述
错误代码如下
在这里插入图片描述
在遇到某个字段值比如findIps是个数组,下面多个字段值还需要继续使用rules校验时候,直接给findIps下面的字段绑定name=“对应的字段值”,是不能校验成功的,解决办法有二:

1、在是数组的地方再套一个
**<a-form :model="当前子对象" v-for="遍历findIps这个数组"></a-form>

**给findlps数组下的字段直接还是绑定name名称为原本的名称就可以;

示例代码如下:
在这里插入图片描述

存在的问题就是 表单验证(校验)不允许嵌套,只能验证到第一层对象,所以需要将第二层变成第一层。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vue 中,我们可以通过自定义验证函数来实现对表单数据的验证。如果你想要在 `a-form-model-item` 组件中绑定多个自定义验证函数,可以像下面这样做: ```html <template> <a-form :model="form" :rules="rules"> <a-form-model-item label="Username" prop="username"> <a-input v-model="form.username" /> </a-form-model-item> <a-form-model-item label="Password" prop="password"> <a-input type="password" v-model="form.password" /> </a-form-model-item> <a-form-model-item label="Confirm Password" prop="confirmPassword"> <a-input type="password" v-model="form.confirmPassword" /> </a-form-model-item> <a-form-model-item> <a-button type="primary" @click="submitForm">Submit</a-button> </a-form-model-item> </a-form> </template> <script> export default { data() { return { form: { username: '', password: '', confirmPassword: '', }, rules: { username: [ { required: true, message: 'Please input username', trigger: 'blur' }, { min: 3, max: 20, message: 'Length should be 3 to 20', trigger: 'blur' }, { validator: this.validateUsername, trigger: 'blur' }, ], password: [ { required: true, message: 'Please input password', trigger: 'blur' }, { min: 6, max: 20, message: 'Length should be 6 to 20', trigger: 'blur' }, ], confirmPassword: [ { required: true, message: 'Please confirm password', trigger: 'blur' }, { validator: this.validateConfirmPassword, trigger: 'blur' }, ], }, }; }, methods: { validateUsername(rule, value, callback) { if (!/^[a-zA-Z0-9]+$/.test(value)) { callback(new Error('Username should only contain alphanumeric characters')); } else { callback(); } }, validateConfirmPassword(rule, value, callback) { if (value !== this.form.password) { callback(new Error('Password confirmation does not match password')); } else { callback(); } }, submitForm() { this.$refs.form.validate(valid => { if (valid) { // do something } else { console.log('validation failed'); } }); }, }, }; </script> ``` 在这个例子中,我们在 `rules` 对象中为 `username` 和 `confirmPassword` 字段绑定了多个验证函数。其中,`validateUsername` 和 `validateConfirmPassword` 方法分别用于验证用户名和确认密码。这些自定义验证函数会在表单数据发生变化时自动触发,并根据验证结果决定是否提示错误信息。 值得注意的是,每个验证函数都应该接受三个参数:`rule`、`value` 和 `callback`。其中,`rule` 表示当前验证规则的配置,`value` 表示当前输入框的值,`callback` 是一个回调函数,用于通知表单验证结果。如果验证通过,可以使用 `callback()` 或者不传参来通知验证成功;如果验证不通过,可以使用 `callback(new Error('message'))` 来通知验证失败,并显示错误提示信息。 最后,我们在提交表单时,调用 `this.$refs.form.validate` 方法来触发表单验证。如果验证通过,`valid` 参数的值会为 `true`,否则为 `false`。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值