首页 > 其他分享 >vue element 表单自定义效验 及 单独效验某个值

vue element 表单自定义效验 及 单独效验某个值

时间:2022-11-11 19:57:58浏览次数:75  
标签:selectPersonCharge vue checked 自定义 value label 效验 callack

主要功能 (表单自定义效验  && 单独效验某个值)

表单自定义效验
export default {
        data() {
        // 定义效验
        const validatePersonCharge = (rule, value, callack) => {
          // value 是绑定值的内容
    if (value == '张三') {
            callack(new Error('不能为张三'))
          } else {
            callack()
          }
        }
        return {
            form: {
                name: ''
            },
             rules: {
                name: [
                  { required: true, message: '请输入名称', trigger: 'blur' },
            // 使用
            { validator: validatePersonCharge, trigger: 'blur' }
                ],
            }
        }
    }
}
单独效验某个值
methods: {
    // 下拉框事件
    select (e) {
      // 点击复选框单独对某个值进行效验 ("selectCharge") 这个是你 prop 绑定的名称
         this.$refs["form"].validateField("selectCharge")
    }
}

源代码

js

data () {
    // 自定义效验
    const validatePersonCharge = (rule, value, callack) => {
       // value 是 v-model 绑定的值
      if (value == '请选择任务负责人') {
       // 抛出效验文字
        callack(new Error('请选择任务负责人'))
      } else {
        callack()
      }
    }
    return {
      taskRules: {         selectPersonCharge: [           { required: true, message: '请选择负责人', trigger: 'blur' },           { validator: validatePersonCharge, trigger: 'blur' }         ],       },
             taskForm: {
             selectPersonCharge: '请选择任务负责人',
            personnel: [               {                 checked: false,                 label: '张小刚'               },               {                 checked: false,                 label: '李小红'               },               {                 checked: false,                 label: '王小明'               },               {                 checked: false,                 label: '周小伟'               },               {                 checked: false,                 label: '李小刚'               }             ]
        }
    }
}
methods: {
    stopDefault (e) {       e.stopPropagation()
      let peopleArray = []       this.taskForm.personnel.forEach(item => {         if (item.checked) {           peopleArray.push(item.label)         }       })
      this.taskForm.selectPersonCharge = peopleArray.join('、')

      if (peopleArray.length == 0) {         this.taskForm.selectPersonCharge = '请选择任务负责人'       }
      // 点击复选框单独对某个值进行效验       this.$refs["form"].validateField("selectPersonCharge")     },
}

HTML 

<el-form-item label="请选择任务负责人:"
                      prop="selectPersonCharge">
          <el-dropdown split-button>
            <span>{{taskForm.selectPersonCharge}}</span>
            <el-dropdown-menu class="select-person"
                              slot="dropdown">
              <el-dropdown-item v-for="(item, index) in taskForm.personnel"
                                :key="index"
                                :command="item.label">
                <el-checkbox v-model="item.checked"
                             @change.native="stopDefault($event)"
                             :label="item.label"></el-checkbox>
              </el-dropdown-item>
            </el-dropdown-menu>
          </el-dropdown>
        </el-form-item>

css

// 下拉菜单的宽度
.select-person li {
  width: 150px;
}
// 图标
::v-deep .el-dropdown .el-dropdown__caret-button {
  padding: 7px 7px 11px 7px;
  border-left: 1px solid #dcdfe6;
}

::v-deep .el-dropdown .el-dropdown__caret-button i {
  font-size: 20px;
}

 

标签:selectPersonCharge,vue,checked,自定义,value,label,效验,callack
From: https://www.cnblogs.com/wqddmg/p/16881573.html

相关文章

  • Vue 怎么用 vm.$set() 解决对象新增属性不能响应的问题 ?
    Vue提供了Vue.set(object,propertyName,value)/vm.$set(object,propertyName,value)来实现为对象添加响应式属性。vm.$set的实现原理是:如果目标是数组,直接......
  • space 动态布局算法(vue3-ts、setup)
    动态布局组件演示效果<template><ulclass="space_ulflex-row":style="{'padding-top':`${hs}px`,'padding-left':`${ws}px`}"......
  • Vue3中的新的内置组件
    在vue2中的内置组件:动态路由中的component:作用:动态显示路由的挂载点,使用is属性动态显示组件;keep-alive:作用:使被包裹的组件保留状态,避免被重新......
  • parceljs 2.8 整合 vue 及解决其他 bug
    问题vue2打包报错https://blog.csdn.net/C_ZhangSir/article/details/100989902解决:引入importVuefrom'vue/dist/vue';parcel中文路径导致打包出错https://blo......
  • 搭建一元一次线性回归方程(自定义类)
    创建了数据集x和y,通过自定义模型,创建忧化函数,损失函数,通过大量训练能过得出预测的y值,当x=4时>>>7.9998和真实的y=8十分接近。importtorchfromtorchimportnnfrom......
  • vue-codemirror 代码编辑器
    codemirror是一个非常强大的代码编辑器插件,但官方并没有提供vue的支持版本,不过跟vue集成的步骤并不复杂,以下是具体实现更多精彩更多技术博客,请移步IT人才终生实训......
  • Visual Studio添加自定义代码片段
    参考:https://blog.csdn.net/baozi141990/article/details/119274426VisualStudio添加自定义代码片段创建代码片段代码片段模板创建代码片段导入代码片段Descrip......
  • vue_01_函数式组件
    函数式组件-全局弹窗组件函数式组件定义1.在template上写上functional2.在exportdefault{}中设置functional为true//方式一<templatefunctional><temp......
  • 2022.11.11 - vue2组件透传解决方案
    template<avue-crudref="crud"v-bind="$attrs"v-on="$listeners"><template#[slotName]="slotProps"v-for="(slot,slotName)in$scopedSlots"......
  • vue 中 ref的一些常见作用
    转:https://www.cnblogs.com/agen-su/p/11388621.html<template><div><!--vue中的ref功能很强大,介绍一下如何使用的。基本用法:本页面获取dom元素。--><div......