element-ui 表单验证,rules给自定义方法传参数,rules正则验证

这篇博客探讨了在Vue.js中如何扩展内置的验证功能。通过在`el-form`组件中定义`rules`属性,我们可以自定义验证规则。例如,`name`字段使用了一个扩展的验证函数`valid.notNull`,它接受多个参数进行复杂校验,而`address`字段则直接应用了预定义的`valid.notNull`验证。此外,还展示了如何设置正则表达式验证和基本的长度限制验证。这有助于提升表单数据输入的准确性和用户体验。

1.本质validator其实传入的是一个function,所以可以把这个方法扩展即可

<el-form :model="formData"
         :rules="rules">
  <el-form-item label="姓名" prop="name">
    <el-input v-model="formData.name"></el-input>
  </el-form-item>
  <el-form-item label="地址" prop="address">
    <el-input v-model="formData.address"></el-input>
  </el-form-item>
  <el-form-item label="年龄" prop="age">
    <el-input v-model="formData.age"></el-input>
  </el-form-item>
  <el-form-item label="学校" prop="school">
    <el-input v-model="formData.school"></el-input>
  </el-form-item>
</el-form>
....

rules: {
	// 动态传不定个数的参数,可以往后排
	name: [{
		validator: (rule, value, callback) => {
			valid.notNull(rule, value, callback, this.formData,minSize='',maxSize='',minLen='',maxLen='')
		},
		trigger: 'blur'
	}],
	// 不需要传参的
	address: [{
		validator: valid.notNull,
		trigger: 'blur'
	}]
	// 匹配正则的
	address: [{pattern: '^[0-9a-zA-Z_]{1,}$', message: '正则不对'}]
	// 最基本的
	school: [
		{ min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur' }
	],
	
}

Vue3中结合Element-UI进行表单验证,如果你想要检查输入是否为纯数字,你可以使用Element-UI提供的`el-form`组件的`rules`选项,并利用自定义验证函数或者内置的正则表达式验证。下面是一个示例: ```javascript <template> <el-form :model="formData" ref="formRef"> <el-form-item label="数字字段" prop="numberField"> <el-input v-model.number="formData.numberField"></el-input> </el-form-item> <!-- ... 其他表单项 --> </el-form> </template> <script setup> import { defineProp } from 'vue'; import { required, validator } from 'element-plus验证'; // 自定义验证规则 const isNumeric = (rule, value) => { return Number.isInteger(value) || value === ''; }; const rules = { numberField: [ { required: true, message: '请输入数字', trigger: 'blur' }, { validator: isNumeric, message: '输入无效,请只输入整数', trigger: ['blur', 'change'] } ] }; export default { props: { formData: { type: Object, default: () => ({ numberField: '' }), watch: { numberField: { immediate: true, handler(newVal, oldVal) { if (newVal !== oldVal && !isNumeric(newVal)) { this.$refs.formRef.validateField('numberField'); } } } } } }, setup(props) { const formRef = ref(props.formData); return { formRef, rules }; } }; </script> ``` 在这个例子中,我们定义了一个`isNumeric`函数用于检查输入是否为纯数字,然后在`numberField`的验证规则中使用了这个函数。当用户输入时,如果输入的不是纯数字,会触发错误提示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值