element-ui的表单正则校验

这篇具有很好参考价值的文章主要介绍了element-ui的表单正则校验。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

🤯🤯💦💦💦竹怜新雨后,山爱夕阳时, 绵绵细雨, 也许会让嘈杂的窗外焕然一新吧!

基本步骤-共三步

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

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

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

  1. 手动兜底验证

详细说明:

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

data() {
  return {
    rules: {
        // 字段名1:表示要验证的属性
        // 值: 表示验证规则列表。它是一个数组,数组中的每一项表示一条规则。
        //     数组中的多条规则会按顺序进行
        字段名1: [
          { 验证规则1 },
          { 验证规则2 },
        ],
        字段名2: [
          { 验证规则1 },
          { 验证规则2 },
        ], 
		}
  }
}

练习demo的正则:


  { required: true, message: '请输入验证码', trigger: 'blur' },
  //trigger: 'blur'表示失去焦点时,开始正则校验
  { pattern: /^\d{6}$/, message: '请输入合法的验证码', trigger: 'blur' },
  { min: 6, max: 8, message: '长度为6-8位', trigger: 'blur' }

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

步骤2-模板中的配置

内容:

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

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

示例代码如下:

<el-form label-width="80px" :model="form" :rules="rules">
  <el-form-item label="手机号" prop="mobile">
    <el-input v-model="form.mobile"></el-input>
  </el-form-item>
  <el-form-item label="密码" prop="code">
    <el-input v-model="form.code"></el-input>
  </el-form-item>
  <el-form-item>
    <el-button type="primary" @click="onSubmit">立即创建</el-button>
    <el-button @click="onCancel">取消</el-button>
  </el-form-item>
</el-form>

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

步骤3-手动兜底验证

element固定格式:

element-ui的表单组件.validate(valid => {
	if(valid) {
	   // 通过了验证
	} else {
		 // 验证失败
	}
})

说明:

● 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>
效果图如下

element-ui的表单正则校验文章来源地址https://www.toymoban.com/news/detail-411195.html

到了这里,关于element-ui的表单正则校验的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vue Element-ui表单校验规则

      Element-ui表单校验规则,使得错误提示可以直接在form-item下面显示,无需弹出框,因此还是很好用的。   我在做了登录页面的表单校验后,一度以为我已经很了解表单的校验规则。但我在深入使用表单校验规则时,遇到下列问题: 如何判断属性值是否在某个范围内,且

    2024年02月03日
    浏览(67)
  • element-ui for循环生成表单时,表单校验问题

    1、静态生成的表单,校验规则是放在data中处理 2、动态表单页面,需要把规则放在el-form-item中,进行校验 注意事项: 当使用v-for循环生成表单时, :prop有格式要求 格式不对会报错 :prop=“‘appraisalTempContent.’ + index + ‘.score’” 字段说明: 1、appraisalTempContent=遍历数组的k

    2024年02月16日
    浏览(28)
  • element-ui表单校验不能同步结果的问题

    多个表单遍历时,要依次获取各个结果,但是往往拿不到最终结果 let flag=true this.$refs[‘form’].validate(valid={ flag=valid }) console.log(valid)//永远是true 提示:这里填写问题的分析: element文档里描述了,validate方法参数为一个回调函数,如果不传则返回一个promise 我们可以在validate的

    2024年02月12日
    浏览(30)
  • element-ui form表单校验 失败的原因

    1、没有在el-form上指定model 2、el-form-item上的prop名称不对,应当与rules中的名称一致; 3、绑定的属性没有在data中声明; 4、特别重要的一点是ruleForm(数据)和rules(校验规则)里面对应的key一定要相同,一个是数据绑定的值 另外一个是值的规则。

    2024年02月11日
    浏览(30)
  • element-ui表单动态添加必填校验

    业务场景:根据form表单中的某些下拉框选中值,动态切换一些属性的必填校验。 效果图: 当活动区域非必填时,活动名称取消必填校验,否则活动名称必填。

    2024年02月11日
    浏览(31)
  • element-ui 表单校验,el-select校验失效问题

    form表单验证时,遇到了校验失效问题,有值的情况下,校验规则并没有对应消失,检查了几个容易出错的地方:1、:model=\\\"addForm\\\" 用model绑定表单,而不是v-model,没问题 2、需要添加校验的对应字段,是否添加了prop属性,ok没问题 3、检查rules,里面校验提示的事件是否正确,发

    2024年02月11日
    浏览(40)
  • element-ui form表单的动态rules校验

    在vue 项目中,有时候可能会用到element-ui form表单的动态rules校验,比如说选择了哪个选项,然后动态显示或者禁用等等。 我们可以巧妙的运用element-ui form表单里面form-item想的校验规则来处理(每一个form-item项都可以单独校验)。 上代码: 重点是这个: :rules=“sqyxForm.jtpslx

    2024年02月15日
    浏览(32)
  • element-ui部分表单组件的必填校验问题

    el-date-picker 必填校验 el-cascader 必填校验

    2024年02月12日
    浏览(34)
  • 【element-ui】form表单动态修改rules校验项

    在项目开发过程中,该页面有暂存和提交两个按钮,其中暂存和提交必填项校验不一样,此时需要动态增减必填项校验 ,解决方法如下: 增加rules校验项 删除rules校验项

    2024年02月04日
    浏览(41)
  • Element-UI el-select多选表单校验问题

    在使用 el-select 多选下拉菜单配置表单校验时, 如果form表单绑定的form对象对应属性值为空字符串或者null(其他未尝试),表单中的多选下拉框会立刻执行校验并弹出校验信息,代码如下: 正确方式如下: 将多选下拉框对应的属性值默认值设置未空数组即可

    2024年02月16日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包