首页 > 其他分享 >vue表单校验必填项

vue表单校验必填项

时间:2023-01-29 14:11:31浏览次数:43  
标签:vue 必填 rules required 表单 trigger blur message true

1.要求

    在做一些用户信息相关的功能时,经常用到表单项去收集数据,其中有些属性必须填写,

2.实现方法

在data中添加一个rules来规定:

rules: {
    no: [{required: true, message: '请输入账号', trigger: 'blur'}]
}

其中:required表示是否为必填项;message:表示提示信息;trigger:表示失去焦点时验证
这一句可以在表单必填项前面添加红色*和提示信息

   2.在el-form表单中绑定rules:
<el-form ref="form" :model="form" :rules="rules"></el-form>
    3.在表单项中用prop属性来对应el-form的:rules="rules"

这一步很重要,

<el-form-item class="item" prop="no" label="登陆账号">
          <el-input v-model="form.no"></el-input>
</el-form-item>

3.完整代码

//<template>
<div>
    <div class="title">用户设置</div>
      <el-form ref="formdata" :model="formdata" :rules="rules" label-width="78px">
        <el-form-item class="item" prop="no" label="登陆账号">
          <el-input v-model="formdata.no" disabled></el-input>
        </el-form-item>
        <el-form-item class="item" prop="name" label="用户名称">
          <el-input v-model="formdata.name" disabled></el-input>
        </el-form-item>
        <el-form-item class="item" prop="oldPsw" label="原始密码">
          <el-input v-model="formdata.oldPsw" show-password  placeholder="请输入原始密码" ></el-input>
        </el-form-item>
        <el-form-item class="item" prop="newPsw" label="新密码">
          <el-input v-model="formdata.newPsw" show-password  placeholder="请输入新密码"></el-input>
        </el-form-item>
        <el-form-item class="item" prop="retypePsw" label="确认密码">
          <el-input v-model="formdata.retypePsw" show-password  placeholder="请再次输入新密码"></el-input>
        </el-form-item>
        <el-form-item>
          <el-button type="primary" @click="onSubmit">确认</el-button>
          <el-button>取消</el-button>
        </el-form-item>
      </el-form>
</div>
//data
data()
  {
    return {
      formdata: {
        no: user.no,
        name: user.name,
        oldPsw: '',
        newPsw: '',
        retypePsw: ''
      },
      rules:
      {
        no: [{required: true, message: '请输入账号', trigger: 'blur'}],
        name: [{required: true, message: '请输入用户姓名', trigger: 'blur'}],
        oldPsw: [{required: true, message: '请输入密码', trigger: 'blur'}],
        newPsw: [
          {required: true, message: '请输入新密码', trigger: 'blur'}],
        retypePsw: [
          { required: true, message: '请再次输入密码', trigger: 'blur' }]
      }
    }
  }

4,表单校验

handleAddDeploy() {
      this.$refs.formLabelAlign.validate(async valid => {
        if (!valid) return false;
        if (this.addFlag) {
          // 新增
          this.formLabelAlign = dataAddDefalutTime(this.formLabelAlign);
          this.addDeploy();
        } else if (this.updateFlag) {
          // 修改
          this.updateDeploy();
        } else if (this.reviewFlag) {
          // 审核
          this.reviewDeploy();
        } else if (this.apperoveFlag) {
          // 审批
          this.apperoveDeploy();
        }
      });
    },

5,另一种校验,更加简洁

rules: {
        externalSupportPlace: [
          // 对外支援服务区域
          {
            required: true,
            validator: this.validationExternalSupportPlace,
            trigger: 'blur'
          }
        ],
        firstPhone: [
          {
            required: false,
            trigger: 'blur'
          },
          {
            // pattern: /^0{0,1}(13[0-9]|15[7-9]|153|156|18[7-9])[0-9]{8}$/,
            pattern: phone_regular,
            message: '手机号格式不对',
            trigger: 'blur'
          }
        ]
}

validationExternalSupportPlace(rule, value, callback) {
      this.$nextTick(() => {
        if (this.dataForm.externalSupport === 1 && !this.dataForm.externalSupportPlace) {
          return callback(new Error('请输入对外支援服务区域'))
        } else {
          callback()
        }
      })
    },

标签:vue,必填,rules,required,表单,trigger,blur,message,true
From: https://www.cnblogs.com/andy0816/p/17072538.html

相关文章

  • GFast V3.2.1 版本发布,采用 GoFrame 2.3 + Vue3 后台管理系统
    平台简介基于全新GoFrame2.3+Vue3+ElementPlus开发的全栈前后端分离的管理系统前端采用vue-next-admin、Vue、ElementUI。特征高生产率:几分钟即可搭建一个后台管......
  • vue3+betterScroll scroll滚动组件
    betterScroll在MVVM框架中使用时最麻烦的是更新时机,一般的需要滚动的列表数据都是来源于后端,是异步的。就必须要渲染完后refresh()一下。但是单独的Scroll组件是通过插槽放......
  • vue-3 this概念
    一、this概念官方是这样说的:在 setup()内部,this不会是该活跃实例的引用因为setup()是在解析其它组件选项之前被调用的,所以setup()内部的this的行为与其它选项中......
  • vue中使用contains判断点击事件,点击超出自身区域隐藏自己
    注意:ref方式获取的和js原生方式获取的dom类型不同,用原生的js获取dom方式代替ref方式,这样才能判断是否属于自身区域的。mounted(){//监听,除了点击自己,点击其他地方......
  • vue递归组件
    一、前言在我们开发过程中,为了提高开发效率,降低开发难度,我们会直接使用组件库来实现,同时也衍生出了很多优秀的组件库,如:饿了么、蚂蚁、Iview、vant等等。但是有时这些组件......
  • vuejs从入门到精通——Vue语法——绑定事件监听器(v-on)
    绑定事件监听器(v-on)事件系统是前端开发非常重要的内容,vue对其进行了封装和扩展,使用起来更加的方便。vue官网对其指令介绍:https://cn.vuejs.org/api/built-in-directiv......
  • vue项目运行npm run serve时候报错
    问题:运行时报错以下代码'options'isdefinedbutneverused...解决:找到根目录下的package.json文件,打开,在rules下加入"no-unused-vars":"off"  ......
  • Vue3用vue ui创建vue2项目时报错
    问题:选中以Vue2默认模板创建时候,下方和控制台出现以下报错Failedtogetresponsefromhttps://registry.yarnpkg.com/vue-cli-version-marker解决:查看C盘下的.vuerc......
  • vuejs从入门到精通——Vue语法——Class 与 Style 绑定(绑定内联样式)
    Class与Style绑定(绑定内联样式)一、绑定对象:style支持绑定JavaScript对象值,对应的是HTML元素的style属性:template:constactiveColor=ref('red')constfontS......
  • Vue核心
    ......