element-ui 表单校验

本文详细介绍了在Vue应用中使用ElementUI的El-Cascader级联选择器和El-Select选择器,以及如何实现表单字段的验证,包括必填项和手机号格式检查。
摘要由CSDN通过智能技术生成
<template>
    <div>
        <el-form :model="ruleForm" :rules="rules" ref="myRuleForm">
            <el-form-item
                label="名字"
                prop="name"
            >
                <el-input
                    v-model="ruleForm.name"
                    placeholder="请输入名字"
                ></el-input>
            </el-form-item>
            <el-form-item
                label="手机"
                prop="phone"
            >
                <el-input
                v-model="ruleForm.phone"
                placeholder="请输入手机"
                ></el-input>
            </el-form-item>
            <!-- 级联选择器 -->
            <el-form-item label="类型" prop="type">
                <el-cascader
                v-model="ruleForm.type"
                :options="typeData"
                :props="{
                    value: 'mycode',
                    label: 'myname',
                }"
                style="width: 100%"
                ></el-cascader>
            </el-form-item>
            <!-- 选择器 -->
            <el-form-item label="类型2" prop="type2">
                <el-select v-model="ruleForm.type2" placeholder="请选择类型">
                    <el-option v-for="(item,index) in typeData" :label="item.myname" :value="item.mycode" :key="index"></el-option>
                </el-select>
            </el-form-item>
            <el-form-item label="日期" prop="date">
                <el-date-picker
                    v-model="ruleForm.date"
                    type="date"
                    placeholder="选择日期">
                </el-date-picker>
            </el-form-item>
            <el-button @click="submitForm('myRuleForm')">提交</el-button>
            <el-button @click="clearForm('myRuleForm')">清空</el-button>
        </el-form>
    </div>
</template>
<script>
export default {
    data () {
        var checkPhone = (rule, value, callback) => { // 手机号验证
            if (!value) {
                return callback(new Error('手机号不能为空'));
            } else {
                const reg = /^1\d{10}$/
                if (reg.test(value)) {
                    callback();
                } else {
                    return callback(new Error('请输入正确的手机号'));
                }
            }
        }
        return {
            ruleForm: {
                name: '',
                type: '',
                type2: '',
                phone: '',
                date: ''
            },
            rules: {
                name: [
                    { required: true, message: "请输入名字", trigger: "blur"}
                ],
                type: [
                    { required: true, message: "请选择类型", trigger: "change" },
                ],
                type2: [
                    { required: true, message: "请选择类型2", trigger: "change" },
                ],
                phone: [
                    { required: true, message: "请输入电话", trigger: "blur" },
                    { validator: checkPhone, trigger: 'blur' },
                    // 或者直接用下面的写法:
                    { pattern: /^1\d{10}$/,message: "请输入正确的手机号码", trigger: "blur"}
                ],
                date: [
                    { required: true, message: "请选择日期", trigger: "change" },
                ],
                idCard: [ // 身份证校验
                    { required: true, message: '请输入身份证号', trigger: 'blur' },
                    { pattern: /^(\d{18,18}|\d{15,15}|\d{17,17}X)$/, message: '请填写正确的身份证号码', trigger: "blur"}
                ],
            },
            typeData: [
                {
                    myname: '第1个选项', mycode: '1'
                },
                {
                    myname: '第2个选项', mycode: '2'
                },
                {
                    myname: '第3个选项', mycode: '3'
                },
            ]
        }
    },
    methods: {
        submitForm(form){
            console.log(this.ruleForm.type);
            this.$refs[form].validate((valid)=>{
                if(valid){
                    console.log('可以提交');
                }else{
                    console.log('no no no');
                }
            })
        },
        clearForm(form){
            this.$refs[form].resetFields();
            this.ruleForm.type = '' // 重置后再提交,级联的校验失效了,打印出来type是['', __ob__: Observer],所以给它清空下值
        }
    }
};
</script>

<style scoped='scoped' lang='scss'>

</style>

获取el-cascader的选中label:this.$refs["xxx"].getCheckedNodes()[0].pathLabels    ref="xxx"

获取el-select的选中label:this.$refs.xxx.selected.currentLabel     ref="xxx"

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值