elementUI下拉框切换引起的校验规则无法清除的问题

问题描述

切换下拉框选项,下面的输入框联动显示指定内容或者清空内容,在显示指定内容的情况下,一切正常;

当需要清空内容时,清空这一动作会触发校验规则,于是会出现切换下拉选项后清空内容立即出现校验规则“此项为必填项” ,但这样是不对的,因为用户并没有开始填写。

解决办法

经过各种移除校验的尝试,只有一种方式可以达到效果:

例如:需移除校验的是domainCode字段,那么:

1. 将domainCode的校验规则全部移除;

2. 将domainCode字段清空;

3. 在setTimeout里再把校验规则加上,注意:必须要在setTImeout里面,因为需要稍微一丢丢的延迟。

this.rules.domainCode = [];

this.mainForm.domainCode = '';

setTimeout(()=>{
    this.rules.domainCode = [RULE_NUMBER20, RULE_REQUIRED];
},0)

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在 antd Form 组件,当表单项的值发生变化时,可以通过设置 `dependencies` 属性来联动其他表单项或表单校验规则。当 `dependencies` 的任一项发生变化时,Form 组件会重新计算所有依赖项的值和校验规则。 具体来说,`dependencies` 属性可以设置为一个数组,数组的每个元素都是一个表单项的 `name` 属性值。当 `dependencies` 任一项的值变化时,Form 组件会重新计算所有依赖项的值和校验规则。 例如,我们有一个表单,其有两个输入框,分别是用户名和密码。当用户名输入框的值发生变化时,我们希望密码输入框的校验规则也跟着改变。此时我们可以设置 `dependencies` 为 `['username']`,表示当用户名输入框的值变化时,密码输入框的校验规则也会重新计算。 ```jsx <Form> <Form.Item label="用户名" name="username" rules={[{ required: true, message: '请输入用户名' }]} > <Input /> </Form.Item> <Form.Item label="密码" name="password" rules={[{ required: true, message: '请输入密码' }]} dependencies={['username']} > <Input.Password /> </Form.Item> </Form> ``` 在上述代码,当用户名输入框的值变化时,密码输入框的校验规则也会重新计算。例如,如果我们将用户名输入框的值设置为 `admin`,则密码输入框的校验规则会变为: ```js [{ required: true, message: '请输入密码' }, { pattern: /^admin/, message: '密码必须以 admin 开头' }] ``` 其第二个校验规则是根据用户名的值动态生成的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值