zoukankan      html  css  js  c++  java
  • vue+Element表单的校验方式

    一、单个添加校验

      这种方式适合校验个别字段,或者表单字段有改变的校验。

    <template>
        <div>
            <el-form :model="model">
                <el-form-item label="姓名:" prop="name" :rules="[{required:true,message:'请输入姓名',trigger:'blur'}]">
                    <el-input v-model="model.name" placeholder="请输入姓名" clearable></el-input>
                </el-form-item>
            </el-form>
        </div>
    </template>
    
    <script>
        export default {
            name: "Test",
            data() {
                return {
                    model: {
                        name: "",
                    }
                }
            },
        }
    </script>

    二、通过 rules 属性传入约定的验证规则,并将 Form-Item 的 prop 属性设置为需校验的字段名

      代码如下所示:

    <template>
        <div>
            <el-form :model="model" :rules="rules">
                <el-form-item label="姓名:" prop="name">
                    <el-input v-model="model.name" placeholder="请输入姓名" clearable></el-input>
                </el-form-item>
            </el-form>
        </div>
    </template>
    
    <script>
        export default {
            name: "Test",
            data() {
                return {
                    model: {
                        name: "",
                    },
                    rules: {
                        name: [{required: true, message: '请输入姓名', trigger: 'blur'}]
                    }
                }
            },
        }
    </script>

    三、动态表单校验

      动态表单校验,需要在单个的表单域上传递属性的验证,示例代码如下所示:

    <template>
        <div>
            <el-form :model="model">
                <el-form-item
                        v-for="(item, index) in model.name"
                        :label="'名字' + index"
                        :key="item.key"
                        :prop="'name.' + index + '.value'"
                        :rules="{required: true, message: '请输入姓名', trigger: 'blur'}"
                >
                    <el-input v-model="item.value"></el-input>
                </el-form-item>
            </el-form>
        </div>
    </template>
    
    <script>
        export default {
            name: "Test",
            data() {
                return {
                    model: {
                        name: [{value: ""}, {value: ""}],
                    }
                }
            },
        }
    </script>

      效果如下图所示:

    四、多个表单的校验

       校验多个表单的思路是:所有单个表单的校验结果返回一个promise,将所有的promise放入一个数组,使用promise.all进行校验。

       代码如下所示:

    <template>
        <div>
            <el-form :model="model1" ref="form1">
                <el-form-item label="姓名:" prop="name" :rules="[{required:true,message:'请输入姓名',trigger:'blur'}]">
                    <el-input v-model="model1.name" placeholder="请输入姓名" clearable></el-input>
                </el-form-item>
            </el-form>
            <el-form :model="model2" ref="form2">
                <el-form-item label="性别:" prop="gender" :rules="[{required:true,message:'请输入性别',trigger:'blur'}]">
                    <el-input v-model="model2.gender" placeholder="请输入性别" clearable></el-input>
                </el-form-item>
            </el-form>
            <el-form :model="model3" ref="form3">
                <el-form-item label="年龄:" prop="age" :rules="[{required:true,message:'请输入年龄',trigger:'blur'}]">
                    <el-input v-model="model3.age" placeholder="请输入年龄" clearable></el-input>
                </el-form-item>
            </el-form>
            <el-button type="primary" @click="submit">点击校验</el-button>
        </div>
    </template>
    
    <script>
        export default {
            name: "Test",
            data() {
                return {
                    model1: {
                        name: "",
                    },
                    model2: {
                        gender: "",
                    },
                    model3: {
                        age: "",
                    }
                }
            },
            methods: {
                submit() {
                    let list = [];
                    list.push(
                        this.checkForm("form1"),
                        this.checkForm("form2"),
                        this.checkForm("form3"));
                    Promise.all(list)
                        .then(() => {
                            console.log("通过检测");
                        })
                        .catch(() => {
                            console.log("未通过");
                        });
                },
                //检查表单是否校验通过,返回Promise
                checkForm(formName) {
                    return new Promise((resolve, reject) => {
                        this.$refs[formName].validate(valid => {
                            if (valid) {
                                resolve();
                            } else reject();
                        });
                    });
                }
            }
        }
    </script>
  • 相关阅读:
    【TensorFlow】tf.nn.max_pool实现池化操作
    nginx页面不能正常访问排除方法
    Nginx启动错误:error while loading shared libraries: libpcre.so.1
    解决:make:cc 命令未找到的解决方法
    spring mvc:练习:表单验证(javaConfig配置和注解)
    spring mvc:练习:javaConfig配置和注解
    SpringMvc中的校验框架@valid和@validation的概念及相关使用 和BindingResult bindingResult
    springmvc的@Validated/@Valid注解使用和BindingResult bindingResult
    spring MVC注解深入研究
    spring mvc: 注解和JavaConfig实例
  • 原文地址:https://www.cnblogs.com/gg-qq/p/13932623.html
Copyright © 2011-2022 走看看