[element plus] vue3动态表单验证

动态表单验证,不能使用如下格式:

messagevalidator 不能同时使用,所以采用 :rules="setValidatorRules(val)" 逻辑处理方式。

<el-form-item
  prop="email"
  label="Email"
  :rules="[
    {
      required: true,
      message: 'Please input email address',
      trigger: 'blur',
      validator: xxx
    }
  ]"
>
  <el-input v-model="dynamicValidateForm.email" />
</el-form-item>
1.1、:rules="setValidatorRules(val)" 逻辑

messagevalidator 不能同时使用

import { verifyPhone } from 'xxx'

methods: {
	setValidatorRules(val) {
		const rules = {
			required: val.required,
			trigger: val.type === "input" ? "blur" : "change",
		};
		if (val.prop === "name1") {
			rules.validator = verifyPhone;
		} else {
			rules.message = val.placeholder;
		}
		return rules;
	},
}

verifyPhone 格式,参考 element-plus form 自定义校验规则

// 手机号码验证
export function verifyPhone(rule, value, callback) {
	let reg = /^((12[0-9])|(13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0|1,5-9]))\d{8}$/
	if(!reg.test(value)){
		return callback(new Error('请输入正确的手机号码'))
	}
	callback()
}
1.2、formItem 格式
export const formItem = [
	{
		id: "1",
		col: 12,
		label: "测试label",
		prop: "name1",
		type: "input",
		maxlength: 100,
		required: true,
		placeholder: "请输入测试label",
		options: [],
	}
]
1.3、formData 格式
data() {
	return {
		formData: {
			name1: "",
		},
	}
}
1.4、html 格式
<el-form ref="formRef" label-width="110px" :model="formData">
	<el-row :gutter="15">
		<el-col :span="val.col" v-for="val in formItem" :key="val.id">
			<el-form-item
				:label="val.label"
				:prop="val.prop"
				:rules="setValidatorRules(val)"
			>
				<el-input
					v-if="val.type === 'input'"
					v-model="formData[val.prop]"
					:placeholder="val.placeholder"
					:maxlength="val.maxlength"
					show-word-limit
					clearable
				/>
				<el-select
					v-else-if="val.type === 'select'"
					v-model="formData[val.prop]"
					:placeholder="val.placeholder"
					style="width: 100%"
				>
					<el-option
						v-for="v in val.options"
						:key="v.label"
						:label="v.label"
						:value="v.value"
					/>
				</el-select>
			</el-form-item>
		</el-col>
	</el-row>
</el-form>
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 3 中的动态表单校验可以通过使用内置的校验器和自定义校验规则来实现。我们可以在表单输入的时候对输入的内容进行校验,然后给出相应的提示信息。 首先,我们可以利用 Vue 3 的响应式特性来实时监听表单输入的变化。可以使用 `v-model` 指令将表单的值与 Vue 实例中的数据进行绑定。 其次,Vue 3 提供了内置的校验器,可以用于检查常见的表单规则,例如必填、长度范围等。可以通过在表单元素上使用 `v-bind` 指令来绑定校验规则。在编写校验规则时,我们可以利用正则表达式来实现更复杂的校验逻辑。 除了内置的校验器外,我们还可以自定义校验规则。可以使用 `watch` 监听表单值的变化,并根据需要编写校验逻辑。在校验过程中,可以根据校验结果来给出相应的提示信息。 在表单提交时,可以通过调用校验方法来进行整体校验。可以遍历表单中的所有字段,逐一进行校验,并将校验结果保存在一个对象中。校验结果可以用于在页面上显示相应的提示信息,或者阻止表单的提交。 综上所述,Vue 3 中的动态表单校验可以通过使用响应式特性、内置的校验器和自定义校验规则来实现。这样可以方便地对表单进行实时的校验,并给出相应的提示信息。在实际应用中,可以根据具体的场景和需求,选择合适的校验方式和规则。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值