uni-app Vue3中动态给表单添加自定义规则

1.首先是自定义规则,需要在onReady或onMounted中注入规则

注:规则的定义就省略了,看官网就可以

https://uniapp.dcloud.net.cn/component/uniui/uni-forms.html

2.使用官网的动态表单配置

<uni-forms-item 
	required
	:label="item.label+' '+index" 
	:name="['domains',index,'value']"
	:rules="[{'required': true,errorMessage: '域名项必填'}]" 
	:key="item.id"
	>
	...
</uni-forms-item>

3.重点!!! 给表单动态添加ref并给当前uni-forms-item绑定validateFunction

...
<view class="unitDuty" v-for="(item,index) in formData.unitDuty" :key="item">
   <uni-forms-item :label="'单位负责人姓名'+(index+1)" required
			 :rules="[{'required': true,errorMessage: '请输入单位负责人姓名'}]" :name="['unitDuty',index,'name']"
			:ref="el=>getUnitDutyName(el,index)">
       <uni-easyinput type="text" v-model="item.name" placeholder="请输入单位负责人姓名" />
   </uni-forms-item>
</view>
...
//自定义规则
const rulesList={
      unitDutyName: {
		rules: [{
			      required: true,
				errorMessage: '请填写单位负责人姓名'
				},
				{
					//a-zA-Z\s
					pattern: /^[\u4E00-\u9FA5\uf900-\ufa2d·s\-]{2,20}$/,
					errorMessage: '用户名格式不正确'
				}
			]
		},
}
const unitDutyNameRefList=ref([]);
//获取动态的dom
const getUnitDutyName=async (el,index)=>{
		if(el){
            //存储动态dom
			unitDutyNameRefList.value[index]=el;
            //遍历动态dom并给当前item设置validateFunction
            unitDutyNameRefList.value.map((item)=>{
				item.setRules(rulesList.unitDutyName.rules);
			})
		}
	}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码上中国

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值