element-ui的表单正则校验

基本步骤-共三步(element-ui表单正则校验)

  1. 定义验证规则。data()中按格式定义规则

  2. 在模板上做属性配置来应用规则(三个配置)

表单设置 rules 属性传入验证规则
给表单设置model属性传入表单数据
给表单项(Form-Item )设置 prop 属性,其值为设置为需校验的字段名 

  1. 手动兜底验证

详细说明:

步骤1-定义表单验证规则,固定格式

 练习demo的正则:

注意:
● rules中的属性名与表单数据项中的属性名必须是一致的。

步骤2-模板中的配置

内容:

  1. 给 el-form 组件绑定 model 为表单数据对象
  2. 给 el-form 组件绑定 rules 属性配置验证规则
  3. 给需要验证的表单项 el-form-item 绑定 prop 属性。 

注意:prop 属性需要指定表单对象中的数据名称 ,不需要动态绑定。 

       我们做到这一步时,当用户输入的内容不符合表单规则要求时,并且某个输入框失焦时,它会给出相应的提示,当我们输入的内容符合要求时,错误提示会自动消失。

步骤3-手动兜底验证

element固定格式:

说明:

● validate 方法是表单组件自带的,用来对表单内容进行检验。

● 需要在模板中添加对表单组件的引用:ref 的作用主要用来获取表单组件手动触发验证  

示例代码

<template>
  <div style="width:800px">
    <h1>表单</h1>
    <el-form
    ref="form"
    :rules="rules"
    :model="form"
    label-width="80px">
      <el-form-item label="用户名" prop="username">
        <el-input v-model="form.username"></el-input>
      </el-form-item>

      <el-form-item label="密码" prop="password">
        <el-input type="password" v-model="form.password"></el-input>
      </el-form-item>

      <el-form-item>
        <el-button type="primary" @click="onSubmit">登录</el-button>
      </el-form-item>
    </el-form>
  </div>
</template>

<script>
  export default {
    data() {
      return {
        form: {
          username: '',
          password: ''
        },
        // 定义规则
        rules: {
          "username": [
            {required: true, message: '请输入用户名', trigger: 'blur'}
          ],
          "password":[
            { required: true, message: '请输入密码', trigger: 'blur' },
            { min: 6, max: 8, message: '长度为6-8位', trigger: 'blur' },
            { 
              validator(_, value, callback){
                // rule:采用的规则
                // value: 被校验的值
                // callback是回调函数, 
                //      如果通过了规则检验,就直接调用callback()
                //      如果没有通过规则检验,就调用callback(错误对象,在错误对象中说明原因)
                //         例如:callback(new Error('错误说明'))
                if(value === '123456'){
                  callback(new Error('密码不能为123456'))
                } else{
                  callback()
                }
                // console.log(rule, value, callback)
              }, 
              trigger:"blur"
            }
          ]
        }
      }
    },
    methods: {
      onSubmit() {
        // 手动兜底校验
        console.log(this.$refs.form)
        // this.$refs.form.validate会让表单自动校验一次
        // valid就会自动接收校验的结果
        this.$refs.form.validate(valid => {
          console.log(valid)
          // valid: true,false
          // 为false: 表单上会有提示信息
          // 如果是true,就可以进一步发ajax做登录
        })
      }
    }
  }
</script>

 

猜你喜欢

转载自blog.csdn.net/weixin_66375317/article/details/124976253