vue3 el-form 表单 正则校验

<template>
<el-form :model="form" :rules="addRules" ref="addForm">
	<el-form-item prop="proportion" label="权重" label-width="80">
		<el-col :span="20">
	       <el-input maxlength="3" v-model.trim="form.proportion" autocomplete="off" />
		</el-col>
	</el-form-item>
</el-form>
</template>

<script setup lang="ts">
    import type { FormInstance, FormRules } from 'element-plus'
    //表单实例
    const addForm = ref<FormInstance>()//ref="addForm"
    //校验规则/^\d+$/
    const addRules = ref<FormRules>({
	    proportion: [
		    { required: true, message: '请输入权重', trigger: ['blur'] },
		    { pattern: /^\d+$/, message: '权重必须为数字', trigger: ['blur'] }
	    ],
    })
    //点击提交,进行校验
    const submit = async (formEl: FormInstance | undefined) => {
	    if (!formEl) return
	    await formEl.validate((valid, fields) => {
	    if (valid) {
        //通过校验
        }else{
            //未通过校验}
</script>
表单校验四要素:
<el-form>
:model='表单数据' -----------------------1
:rules='校验规则' -----------------------2

<el-form-item>
 prop="xxx"-----------------------3

<el-form-item>
    <el-input v-model='data.xxx'>-----------------------4
</el-form-item>

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
可以使用Vue.js的内置校验器和自定义校验器来对表单进行校验。 内置校验器: Vue.js提供了内置的校验器,可以通过在表单元素上添加一些属性来启用这些校验器。例如: - required:必填项 - email:邮箱格式 - min:最小值 - max:最大值 - minlength:最小长度 - maxlength:最大长度 - pattern:正则表达式 示例: ```html <template> <div> <form> <label for="name">姓名:</label> <input type="text" id="name" v-model="name" required> <label for="email">邮箱:</label> <input type="email" id="email" v-model="email" required> <label for="age">年龄:</label> <input type="number" id="age" v-model="age" min="18" max="60"> <label for="password">密码:</label> <input type="password" id="password" v-model="password" minlength="6" maxlength="16" pattern="^[a-zA-Z0-9]{6,16}$"> <button type="submit">提交</button> </form> </div> </template> <script> export default { data() { return { name: '', email: '', age: '', password: '' } } } </script> ``` 自定义校验器: 除了内置校验器外,我们还可以使用自定义校验器来校验表单。自定义校验器需要定义一个方法,在该方法中对表单元素的值进行校验。如果校验不通过,可以返回一个错误信息,否则返回true。 示例: ```html <template> <div> <form> <label for="username">用户名:</label> <input type="text" id="username" v-model="username" v-validate-username> <button type="submit">提交</button> </form> </div> </template> <script> export default { data() { return { username: '' } }, methods: { validateUsername() { // 校验用户名 if (this.username === 'admin') { return true } else { return '用户名必须为admin' } } }, directives: { validateUsername: { bind(el, binding, vnode) { const validate = vnode.context.validateUsername el.addEventListener('input', () => { const res = validate() if (res === true) { el.classList.remove('error') el.classList.add('success') } else { el.classList.remove('success') el.classList.add('error') alert(res) } }) } } } } </script> ``` 在上面的例子中,我们定义了一个自定义校验器v-validate-username,该校验器绑定在用户名输入框上。当用户输入框的值改变时,会触发校验器的回调函数validateUsername(),该函数会校验用户名是否为'admin',如果不是,则返回一个错误信息,否则返回true。如果校验不通过,会在输入框下方显示错误提示。如果校验通过,则会在输入框下方显示成功提示。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值