rules规则(包含回调函数规则)配置

news/2024/7/24 6:29:59

这里总结了几个常用的规则,方便下次使用
必填,必选,邮箱,手机号,时间,数字,数组,字符长度,
以邮箱为例子与手机号为例

//这是一个邮箱的验证规则
rules: {
    email: [{
            required: true,//是否必填
            message: '请输入邮箱地址',//错误提示信息
            trigger: 'blur'//检验方式(blur为鼠标点击其他地方,)
        },
        {
            type: 'email',//要检验的类型(number,email,date等)
            message: '请输入正确的邮箱地址',
            trigger: ['blur', 'change'](change为检验的字符变化的时候)
        }
    ],
  phone: [{
        required: true,
        pattern: /^1[34578]\d{9}$/,//可以写正则表达式呦呦呦
        message: '目前只支持中国大陆的手机号码',
        trigger: 'blur'
    }],
}

在这里插入图片描述
HTML文件

<!DOCTYPE html>
<html>

    <head>
        <meta charset="UTF-8">
        <title></title>
        <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
    </head>

    <body>
        <div id="app">
            <el-row>
                <el-col :span="12" :offset="6">
                    <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
                        <el-form-item label="活动名称" prop="name">
                            <el-input v-model="ruleForm.name"></el-input>
                        </el-form-item>
                        <el-form-item label="客户邮箱" prop="email">
                            <el-input v-model="ruleForm.email"></el-input>
                        </el-form-item>
                        <el-form-item label="客户年龄" prop="age" prop='age'>
                            <el-input type="age" v-model.number="ruleForm.age" auto-complete="off"></el-input>
                        </el-form-item>
                        <el-form-item label="活动区域" prop="region">
                            <el-select v-model="ruleForm.region" placeholder="请选择活动区域">
                                <el-option label="区域一" value="shanghai"></el-option>
                                <el-option label="区域二" value="beijing"></el-option>
                            </el-select>
                        </el-form-item>
                        <el-form-item label="活动时间" required>
                            <el-col :span="11">
                                <el-form-item prop="date1">
                                    <el-date-picker type="date" placeholder="选择日期" v-model="ruleForm.date1" style="width: 100%;"></el-date-picker>
                                </el-form-item>
                            </el-col>
                            <el-col class="line" :span="2">-</el-col>
                            <el-col :span="11">
                                <el-form-item prop="date2">
                                    <el-time-picker type="fixed-time" placeholder="选择时间" v-model="ruleForm.date2" style="width: 100%;"></el-time-picker>
                                </el-form-item>
                            </el-col>
                        </el-form-item>
                        <el-form-item label="活动性质" prop="type">
                            <el-checkbox-group v-model="ruleForm.type">
                                <el-checkbox label="美食/餐厅线上活动" name="type"></el-checkbox>
                                <el-checkbox label="地推活动" name="type"></el-checkbox>
                                <el-checkbox label="线下主题活动" name="type"></el-checkbox>
                                <el-checkbox label="单纯品牌曝光" name="type"></el-checkbox>
                            </el-checkbox-group>
                        </el-form-item>
                        <el-form-item label="特殊资源" prop="resource">
                            <el-radio-group v-model="ruleForm.resource">
                                <el-radio label="线上品牌商赞助"></el-radio>
                                <el-radio label="线下场地免费"></el-radio>
                            </el-radio-group>
                        </el-form-item>
                        <el-form-item>
                            <el-button type="primary" @click="submitForm('ruleForm')">立即创建</el-button>
                            <el-button @click="resetForm('ruleForm')">重置</el-button>
                        </el-form-item>
                    </el-form>
                </el-col>
            </el-row>

        </div>
        <script src="https://cdn.jsdelivr.net/npm/vue"></script>
        <script src="https://unpkg.com/element-ui/lib/index.js"></script>
        <script>
            var vm = new Vue({
                el: "#app",
                data() {
                    return {
                        age: '',
                        ruleForm: {
                            name: '',
                            region: '',
                            date1: '',
                            date2: '',
                            delivery: false,
                            type: [],
                            resource: '',
                            desc: '',
                            email: '',
                            age: '',
                        },
                        rules: {
                            age: [{
                                    required: true,
                                    message: '年龄不能为空'
                                },
                                {
                                    type: 'number',
                                    message: '年龄必须为数字值'
                                },
                                
                            ],
                            email: [{
                                    required: true,
                                    message: '请输入邮箱地址',
                                    trigger: 'blur'
                                },
                                {
                                    type: 'email',
                                    message: '请输入正确的邮箱地址',
                                    trigger: ['blur', 'change']
                                }
                            ],
                            name: [{
                                required: true,
                                message: '请输入活动名称',
                                trigger: 'blur'
                            }],
                            region: [{
                                required: true,
                                message: '请选择活动区域',
                                trigger: 'change'
                            }],
                            date1: [{
                                type: 'date',
                                required: true,
                                message: '请选择日期',
                                trigger: 'change'
                            }],
                            date2: [{
                                type: 'date',
                                required: true,
                                message: '请选择时间',
                                trigger: 'change'
                            }],
                            type: [{
                                type: 'array',
                                required: true,
                                message: '请至少选择一个活动性质',
                                trigger: 'change'
                            }],
                            resource: [{
                                required: true,
                                message: '请选择活动资源',
                                trigger: 'change'
                            }],
                        }
                    };
                },
                methods: {
                    submitForm(formName) {
                        this.$refs[formName].validate((valid) => {
                            if(valid) {
                                alert('submit!');
                            } else {
                                console.log('error submit!!');
                                return false;
                            }
                        });
                    },
                    resetForm(formName) {
                        this.$refs[formName].resetFields();
                    }
                }
            });
        </script>
    </body>

</html>

回调函数:
HTML:

<el-form :model="SMSForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm form">
      <el-form-item label="短信平台模板号" prop="templateNumber">
        <el-input v-model="SMSForm.templateNumber"  placeholder="不区分大小写,最多50字" max="50" style="margin-left:10px"></el-input>
      </el-form-item>
</el-form>      
return {
        SMSForm: {
          templateNumber:'',
          templateName: '',
          applySys: 1,
          messageRuleId: null,
          ruleList: []
        },
        isEdit: false,
        rules: {
          templateNumber:[
            { required: true, message: '请输入模板号', trigger: 'blur' },
            { min: 1, max: 50, message: '长度在 1 到 50 个字符', trigger: 'blur' },
            { validator: checkTempNumber, trigger: 'blur' }
          ],
          	}
          }
//回调函数
 data () {
      let checkTempNumber = (rule, value, callback) => {
        let number = value.match(/[^\w_]/g,'');
        if(!number){
          callback()
          return false
        }else{
          callback(new Error('仅限英文和数字'))
        }
      }
    }

http://www.niftyadmin.cn/n/1845272.html

相关文章

react中的状态提升(子组件给父组件传值、多个子组件状态共享)

官方对这个状态提升的解释是&#xff1a; 在 React 中&#xff0c;将多个组件中需要共享的 state 向上移动到它们的最近共同父组件中&#xff0c;便可实现共享 state。这就是所谓的“状态提升”。 看看官方文档给出的例子&#xff1a; // 这是子组件 class TemperatureInput e…

react使用qrcode.react生成扫描二维码

需求&#xff1a;在pc端可以根据当前环境&#xff08;开发、生产等等&#xff09;生成对应的二维码&#xff0c;手机扫码跳转至指定页面。 查了一圈&#xff0c;发现qrcode.react这个组件用的人最多&#xff0c;看了一下官网说明&#xff1a; var React require(react); var …

Antd Form.Item相互嵌套,里层的值修改最外层的值

标题可能有点拗口&#xff0c;意思是这样&#xff1a; <Form.Item nametotal_list><ChildrenCom /> </Form.Item>function InputGroup({ onChange }){ // 注意&#xff1a;这个参数onChange是接收的nametotal_list的onChange事件const handleChange(e,…

js正则表达式获取字符串中多个大括号{}中的内容,包括大括号并放入数组中

var str 订单号bai&#xff1a;{0}&#xff0c;交易商品&#xff1a;du{1}&#xff0c;初步估zhi价&#xff1a;{2}元; var array []; array str.match(/{(.*?)}/g) alert(array);//得到的结果是&#xff1a;{0}&#xff0c;{1}&#xff0c;{2}

react+Antd表单用Form.Item互相校验

表单中有两项&#xff1a;手机号和邮箱号&#xff0c;初始化都是必填&#xff0c;如果填了其中一项&#xff0c;则另一项为非必填&#xff0c;而且两项都各自有自己的rules校验规则&#xff0c;举例&#xff1a;在填了手机号后&#xff0c;邮箱号为非必填&#xff0c;但是又清空…

Antd表单项根据后端返回字段显示错误的校验提示语

其实这就是官方的一个方法&#xff1a;setFields 举例&#xff1a; // res.Data 是后端返回的一组不符合校验逻辑的数据 res.Data.forEach((q,w) > {this.formRef.current.setFields([{name: q.name, errors: q.errorMsg}]) // name就是form.item的name&#xff0c;erro…

vue 判断循环获取的数组中的某一项的值是否为空

一个循环后的下拉框的数组plaLists <el-form-item v-for"(items,index) in plaLists" :key"index" :label"items.label"> <el-select v-model"items.value" placeholder"请选择" change"getModel(index,item…

前端将页面table或数据导出为Excel(.xlsx)导入Excel为json数组

老生常谈了&#xff0c;但还是谈谈 最近上新项目&#xff08;react&#xff09;&#xff0c;里面有导出功能 &#xff0c;就这个库&#xff0c;这是演示demo. import { export_table_to_excel, export_json_to_excel, read} from /utils/excel <div><Button click&quo…