Element UI表单校验之动态表单校验的坑

为了提高自己,将自己在实践过程中遇到的坎儿记录一下,积累经验!!!有不妥当的地方,希望大佬们可以指点一二,感激不尽!!!!!!

在这里插入图片描述
在这里插入图片描述

<template>
    <!--    这里总结的是关于element UI 表单校验中遇到的案例-->
    <el-form :model="formData" status-icon :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm"
             label-position="left">
        <el-form-item label="名称" prop="name">
            <el-input v-model="formData.name" placeholder="请输入内容" clearable></el-input>
        </el-form-item>
        <el-form-item label="类型" prop="type">
            <el-select v-model="formData.type" placeholder="请选择类型" clearable @change="changeType">
                <el-option v-for="item in selectForm" :key="item.id" :label="item.label" :value="item.id"></el-option>
            </el-select>
        </el-form-item>
        <el-form-item label="部署模式" prop="model">
            <el-input v-model="formData.model" placehoder="请输入模式" clearable></el-input>
        </el-form-item>
        <el-button type="primary" @click="addLineForm">点击增加一行</el-button>
        <el-form :inline="true" :model="item" :rules="rules" class="demo-form-inline"
                 v-for="(item,index) in formList" :key="index" ref="addForm">
            <el-form-item label="IP" prop="IP">
                <el-input v-model="item.IP" placeholder="请输入"></el-input>
            </el-form-item>
            <el-form-item label="角色" prop="role">
                <el-input v-model="item.role" placeholder="请输入"></el-input>
            </el-form-item>
            <el-form-item label="端口" prop="port">
                <el-input v-model="item.port" placeholder="请输入"></el-input>
            </el-form-item>
            <!--            删除按钮-->
            <el-button type="danger" icon="el-icon-delete" @click="delLineForm(index)"></el-button>

        </el-form>
        <!--        提交按钮-->
        <el-form-item>
            <el-button type="primary" @click="submitForm('ruleForm','addForm')">提交</el-button>
            <el-button @click="resetForm('ruleForm','addForm')">重置</el-button>
        </el-form-item>
    </el-form>
</template>

<script>
    export default {
        name: "formBug",
        data() {
            return {
                formData: {
                    name: '',
                    type: '',
                    model: ''
                },
                selectForm: [
                    {label: '周一', id: '1'},
                    {label: '周二', id: '2'}
                ],
                formList: [
                    {
                        IP: '',
                        role: '',
                        port: ''
                    },
                ],
                rules: {
                    name: [{required: true, message: '请输入活动名称', trigger: 'blur'}],
                    type: [{required: true, message: '请输入活动类型', trigger: 'blur'}],
                    model: [{required: true, message: '请输入活动模式', trigger: 'blur'}],
                    IP: [{required: true, message: '请输入Ip', trigger: 'blur'}],
                    role: [{required: true, message: '请输入角色', trigger: 'blur'}],
                    port: [{required: true, message: '请输入端口', trigger: 'blur'}],
                }
            }
        },
        methods: {
            //选择类型变化时触发,实现选择类型以后,其他表单必填验证就消失的效果
            changeType(){
                this.$refs["ruleForm"].clearValidate();
                this.$refs["addForm"].forEach(item=>{
                    item.clearValidate()
                })
            },
            //增加一行表单
            addLineForm() {
                this.formList.push(
                    {
                        Ip: '',
                        role: '',
                        port: ''
                    }
                )
            },
            //删除一行表单
            delLineForm(index) {
                this.formList.splice(index, 1)
            },
            submitForm() {
                console.log(this.$refs['addForm'])
                this.$refs['ruleForm'].validate((valid) => {
                    this.$refs['addForm'].forEach(item => {
                        let length = this.formList.length;
                        let num = 0
                        item.validate(valid1 => {
                            if (valid1) {
                                num++
                            }
                        })
                        if (num === length && valid) {
                            console.log('成功')
                        }
                    })
                });
            },
            resetForm(formName,addform) {
                this.$refs[formName].resetFields();
                this.$refs[addform].forEach(item=>{
                    item.resetFields()
                })
            }
        },
        created() {
            // console.log(this.$refs[formName])

        }
    }
</script>

<style scoped>

</style>```

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Element UI中进行表单校验,可以按照以下步骤操作: 1. 在el-form元素上添加校验规则字段rules,并将其绑定到一个对象上。例如,在data中定义一个名为rules的对象,并将其绑定到el-form上::rules="rules"。 2. 在script标签中定义rules对象,并在该对象中添加要校验的字段及其校验规则。每个字段的校验规则是一个数组,包含一个或多个校验规则对象。例如,要校验用户名字段,可以使用以下格式进行配置: ``` rules: { username: [ { required: true, message: '请输入用户名', trigger: 'blur' } ] } ``` 这个例子中的校验规则要求用户名字段不能为空,且在表单失去焦点时触发校验。你可以根据需求自定义校验规则。 3. 在el-form-item元素内部的el-input组件上添加需要校验的字段名。例如,要校验用户名字段,可以在el-input上添加prop属性并将其设置为"username"。 4. 如果还需要在提交表单时进行整体校验,可以使用el-form组件的validate方法。在点击提交按钮或其他触发表单提交的事件时,调用validate方法即可。例如,可以在按钮的点击事件中添加以下代码: ``` this.$refs.form.validate((valid) => { if (valid) { // 表单校验成功,执行提交操作 } else { // 表单校验失败,给出相应提示 } }); ``` 这个例子中的代码会对整个表单进行校验,并在校验完成后的回调函数中判断校验结果。如果valid为true,则表示校验通过;如果valid为false,则表示校验不通过。 以上是在Element UI中进行表单校验的基本步骤。你可以根据实际需求自定义校验规则,并根据校验结果进行相应的处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值