element-ui 表单校验・大全

这篇具有很好参考价值的文章主要介绍了element-ui 表单校验・大全。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

element-ui 官网

element-ui 表单校验的规则如下:文章来源地址https://www.toymoban.com/news/detail-717939.html

<属性名>: [
	{ 
		required: true,// 是否必填(若有label则在其左上角显示红点,否则不显示必填标志),可选。
		type: 'date',// 限制输入的数据类型,可选。
		min: 3,// 当输入的是数值时,限制输入的最小值,可选。
		max: 5,// 当输入的是数值时,限制输入的最大值,可选。
		pattern: /^\d+\.\d+\.\d+$/,// 正则表达式,可选。
		message: "请使用 x.x.x 格式编号",// 错误时提示信息,必须。
		trigger: ['change', 'blur']// 触发校验的事件,必须。监听单一事件用字符串,监听多个事件用数组
	},
	// ...
]

1、对全部表单项的校验

<template>
<form ref="formRef" :model="form" :rules="rules" hide-required-asterisk class="base-form" :label-width="120">
	<el-form-item label="编码:" prop="code">
		<el-input v-model="form.code" placeholder="请输入编码" clearable/>
	</el-form-item>
	<el-form-item label="地址" prop="address">
		<el-select v-model="form.address" placeholder="请选择一个城市" clearable>
			<el-option label="上海" value="shanghai" />
			<el-option label="北京" value="beijing" />
		</el-select>
    </el-form-item>
	<el-form-item label="月份:" prop="moth">
		<el-input v-model="form.moth" placeholder="请输入月份" clearable/>
	</el-form-item>
	<el-form-item label="日期" prop="date">
		<el-date-picker v-model="form.date" type="date" placeholder="请选择日期" clearable/>
	</el-form-item>
	<el-form-item label="成员:" prop="members">
		<el-checkbox-group v-model="form.members">
        	<el-checkbox label="一号" name="members" />
        	<el-checkbox label="二号" name="members" />
        	<el-checkbox label="三号" name="members" />
		</el-checkbox-group>
    </el-form-item>
	<el-form-item label="手机号:" prop="phone">
		<el-input v-model="form.phone" placeholder="请输入手机号" clearable/>
	</el-form-item>
	<el-form-item>
		<el-button @click="submit(formRef)">保存</el-button>
    </el-form-item>
</form>
</template>
<script setup lang="ts">
import { ref, reactive } from 'vue'
import type { FormInstance, FormRules } from 'element-plus'

const formRef = ref(null)

interface RuleForm {
    code: string
   	address: string
    moth: string | number
	date: Date | string
	members: string[]
	phone: string
}

const form = reactive<RuleForm>({
	code: '',
	address: '',
    moth: '',
	date: '',
	members: []
	phone: '',
})

// 表单校验
const rules = reactive<FormRules<RuleForm>>({
	// 失焦触发校验
	code: [{ required: true, message: '请输入编码', trigger: 'blur' }],
	// 值改变时触发校验
	address: [{ required: true, message: '请选择一个城市', trigger: 'change' }],
	// 包含最大值和最小值
	moth: [
		{ required: true, message: '请输入月', trigger: 'blur' },
		{ min: 1, max: 12, message: '请输入1~12月中的一个', trigger: 'blur' },
	],
	// 带类型的校验 - 类型为日期
	date: [{ type: 'date', required: true, message: '请输入日期', trigger: 'change' }],
	// 带类型的校验 - 类型为数组
	members: [{ type: 'array', required: true, message: '请选择成员', trigger: 'change' }],
	// 带正则表达式的校验
    phone: [
    	{ required: true, message: '请输入手机号', trigger: 'blur' },
    	{ pattern: /^(13[0-9]|15[0-9]|17[0-9]|18[0-9]|19[0-9])[0-9]{8}$/, message: '请输入正确的手机号', trigger: 'blur' },
    ],
})

// 提交 - 对整个表单进行校验
const submit = async (formEl: FormInstance | undefined) => {
	if (!formEl) return
	await formEl.validate((valid, fields) => {
		if (valid) {
			console.log('submit!')
		} else {
			console.log('error submit!', fields)
		}
	})
}
</script>

2、校验指定字段

<template>
<form ref="formRef" class="base-form" :model="form" :label-width="120" :rules="rules" hide-required-asterisk>
	<el-form-item label="编码:" prop="code">
		<el-input v-model="form.code" autocomplete="off" clearable @input="validateSelect" @keyup.enter="validateSelect"/>
	</el-form-item>
</form>
</template>
<script setup lang="ts">
import { ref } from 'vue'
import type { FormInstance, FormRules } from 'element-plus'

const formRef = ref(null)

interface RuleForm {
    code: string
}

const form = ref<RuleForm>({
    code: '',
})

// 表单校验
const rules = reactive<FormRules<RuleForm>>({
    code: [{ required: true, message: '请填写编码', trigger: 'blur' }],,
})

// 校验指定字段
const validateSelect = () => {
	formRef.value!.validateField('selectValue')
}
</script>

3、自定义函数校验表单

<template>
<form ref="formRef" class="base-form" :model="form" :label-width="120" :rules="rules" hide-required-asterisk>
	<el-form-item label="手机号:" prop="phoneNumber">
		<el-input v-model="form.phoneNumber" autocomplete="off" clearable/>
	</el-form-item>
</form>
</template>
<script setup lang="ts">
import { ref } from 'vue'
import type { FormInstance, FormRules } from 'element-plus'

const formRef = ref(null)

interface RuleForm {
    phoneNumber: string
}

const form = ref<RuleForm>({
    phoneNumber: '',
})

// 自定义校验 - 手机号
const checkPhoneNumber = (rule: any, value: any, callback: any) => {
	const pattern = /^(13[0-9]|15[0-9]|17[0-9]|18[0-9]|19[0-9])[0-9]{8}$/
	if(!value) {
		callback(new Error('请输入手机号'))
	} else if(!pattern.test(val)) {
		callback(new Error('请输入正确的手机号'))
	} else {
		callback()
	}
}

// 表单校验
const rules = reactive<FormRules<RuleForm>>({
    phoneNumber: [{ validator: checkPhoneNumber, trigger: 'blur' }],,
})
</script>

4、一行内多个输入框的校验

<template>
<form ref="formRef" class="base-form" :model="form" :label-width="120" :rules="rules" hide-required-asterisk>
	<el-form-item class="form-row" label="测试:" prop="test">
        <section class="form-col">
            1 <el-input class="ml-5" v-model="form.test[0]" placeholder="第1项" clearable/>
        </section>
        <section class="form-col">
            2 <el-input class="ml-5" v-model="form.test[1]" placeholder="第2项" clearable/>
        </section>
    </el-form-item>
</form>
</template>
<script setup lang="ts">
import { ref, reactive } from 'vue'
import type { FormInstance, FormRules } from 'element-plus'

// 表单
const formRef = ref<FormInstance>()

interface RuleForm {
    test: string[]
}

const form = ref<RuleForm>({
    test: [],
})

const checkTest =  = (rule: any, value: any, callback: any) => {
    const [oneStr, twoEnd] = form.value.coordinate
    const pattern1 = /^[EWew]?[+-]?([0-9]|[1-8][0-9]|90)(\.\d+)?$/
    const pattern2 = /^[NSns]?[+-]?([0-9]|[1-9][0-9]|1[0-7][0-9]|180)(\.\d+)?$/

    if (oneStr && twoEnd && pattern1.test(oneStr) && pattern2.test(twoEnd)) {
        callback()
    } else {
    	!oneStr && !twoEnd && callback(new Error('请输入所有项'))
	    !oneStr && callback(new Error('请输入第1项'))
	    !twoEnd && callback(new Error('请输入第2项'))
	    !(pattern1.test(oneStr)) && callback(new Error('请输入正确的第1项'))
	    !(pattern2.test(twoEnd)) && callback(new Error('请输入正确的第2项'))
	    !(pattern1.test(oneStr)) && !(pattern2.test(twoEnd)) && callback(new Error('请输入正确的项'))
    }
}

const rules = reactive<FormRules<RuleForm>>({
    test: [{ validator: checkTest, trigger: 'blur' }],
})
</script>

到了这里,关于element-ui 表单校验・大全的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • element-ui的表单正则校验

    🤯🤯💦💦💦竹怜新雨后,山爱夕阳时, 绵绵细雨, 也许会让嘈杂的窗外焕然一新吧! 基本步骤-共三步 定义验证规则。data()中按格式定义规则 在模板上做属性配置来应用规则(三个配置) 给表单设置 rules 属性传入验证规则 给表单设置model属性传入表单数据 给表单项(

    2023年04月12日
    浏览(31)
  • element-ui 表单校验 rules 配置

    指示type要使用的验证器。可识别的类型值为: string :类型必须为 string 。 type  默认是  string。 number :类型必须为 number 。 boolean :类型必须为 boolean。 integer :类型必须为  number  且为整数。 float :类型必须为  number  且为浮点数。 array :类型必须为数组。 enum :值必须

    2024年02月04日
    浏览(34)
  • element-ui的form表单校验

    form表单校验基本三步: 1、定义验证规则 在data中定义表单校验规则,一个表单项可定义多条规则,表单项规则用数组,规则为对象,required为必须填写,message为校验提示信息,trigger为校验时机,可选blur和change,分别为失去焦点和数据变化;min/max为最小与最大字符个数,v

    2024年02月11日
    浏览(48)
  • Vue Element-ui表单校验规则

      Element-ui表单校验规则,使得错误提示可以直接在form-item下面显示,无需弹出框,因此还是很好用的。   我在做了登录页面的表单校验后,一度以为我已经很了解表单的校验规则。但我在深入使用表单校验规则时,遇到下列问题: 如何判断属性值是否在某个范围内,且

    2024年02月03日
    浏览(68)
  • element-ui for循环生成表单时,表单校验问题

    1、静态生成的表单,校验规则是放在data中处理 2、动态表单页面,需要把规则放在el-form-item中,进行校验 注意事项: 当使用v-for循环生成表单时, :prop有格式要求 格式不对会报错 :prop=“‘appraisalTempContent.’ + index + ‘.score’” 字段说明: 1、appraisalTempContent=遍历数组的k

    2024年02月16日
    浏览(28)
  • element-ui form表单校验 失败的原因

    1、没有在el-form上指定model 2、el-form-item上的prop名称不对,应当与rules中的名称一致; 3、绑定的属性没有在data中声明; 4、特别重要的一点是ruleForm(数据)和rules(校验规则)里面对应的key一定要相同,一个是数据绑定的值 另外一个是值的规则。

    2024年02月11日
    浏览(30)
  • element-ui表单校验不能同步结果的问题

    多个表单遍历时,要依次获取各个结果,但是往往拿不到最终结果 let flag=true this.$refs[‘form’].validate(valid={ flag=valid }) console.log(valid)//永远是true 提示:这里填写问题的分析: element文档里描述了,validate方法参数为一个回调函数,如果不传则返回一个promise 我们可以在validate的

    2024年02月12日
    浏览(31)
  • element-ui表单动态添加必填校验

    业务场景:根据form表单中的某些下拉框选中值,动态切换一些属性的必填校验。 效果图: 当活动区域非必填时,活动名称取消必填校验,否则活动名称必填。

    2024年02月11日
    浏览(32)
  • element-ui 表单校验,el-select校验失效问题

    form表单验证时,遇到了校验失效问题,有值的情况下,校验规则并没有对应消失,检查了几个容易出错的地方:1、:model=\\\"addForm\\\" 用model绑定表单,而不是v-model,没问题 2、需要添加校验的对应字段,是否添加了prop属性,ok没问题 3、检查rules,里面校验提示的事件是否正确,发

    2024年02月11日
    浏览(40)
  • (el-Form)操作(不使用 ts):Element-plus 中 Form 表单组件校验规则等的使用

    1、 Element-plus 提供 Form 表单组件情况: 其一、 Element-plus 自提供的 Form 代码情况为(示例的代码): 代码地址( 直接点击下面 url 跳转 ):https://element-plus.gitee.io/zh-CN/component/form.html#自定义校验规则 其二、页面的显示情况为: 2、目标想修改后的情况: // 此时虽然页面的样式有些变

    2024年02月13日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包