vue + element-ui 表单校验通用组件(封装公用方法)

5 篇文章 0 订阅

普通校验方法已经足够,但是项目涉及:需要规避正则特殊字符,特建立一个组件可以直接调用

参考链接:https://www.cnblogs.com/chichuan/p/13445196.html

1.在VUE中新建通用的JS,封装公用校验方法,目录:src/utils/formCheck.js

 export default内可以分类封装验证,封装不同表单的验证方法

// 正则特殊字符 校验
const validateSpecialChar = (rule, value, callback) => {
  // 所有.* 换成%
  let reg1 = new RegExp('\\.\\*', 'g')// g代表全部
  let newMsg = value.replace(reg1, '%')
  let reg = new RegExp('[\\\\:?.*\\^+<>|{}]')
  if (reg.test(newMsg)) {
    callback(new Error('正则表达式不能包含\\ : ? . * ^ + < > | { }等单个特殊字符'))
  } else {
    callback()
  }
}
export default {
  common: {
    // ---------------------公共验证方法,可多个
    specialChar: [{
      required: true,
      message: '参数不能为空'
    },
    {
      validator: validateSpecialChar,
      trigger: 'blur'
    }
    ],
    校验方法2:[略],
    校验方法3:[略]
  },
  handle: {
    // ---------------------处理表单的验证方法
    operResult: [{// 处理结果 (例子可自由根据表单定义)
      required: true,
      message: '请选择处理结果'
    }],
    opinion: [{// 处理结果描述 (例子可自由根据表单定义)
      required: true,
      message: '请填写处理结果描述'
    }]
  }
}

 2.全局挂载 main.js

1 import currencyRules from './utils/formCheck.js'
2 
3 // 全局方法挂载
4 Vue.prototype.$rules = currencyRules

3.form标签中调用

<el-form-item label="白名单违禁词" prop="word" :rules="$rules.common.specialChar">
  <el-input v-model="dataForm.word" placeholder="正则匹配,已自动增加.*,填写违禁词即可" style="width:700px"></el-input>
</el-form-item>

 以上就可以解决,可以同时使用<el-form>中校验规则:rules,也可以单独调用公用方法specialChar

4.其他参考

 1).表单标签加  :rules="$rules.handle"

<el-form
      ref="form"
      :model="form"
      label-width="150px"
      :rules="$rules.handle"
      style="padding:0 50px 0 20px;"
    >
      <div class="wrap">
        <el-form-item label="处理结果" prop="operResult">
          <el-select
            v-model="form.operResult"
            placeholder="请选择处理结果"
            clearable
            size="small"
            style="width:50%"
          >
            <el-option
              v-for="item in handle_result"
              :key="item.dictValue"
              :label="item.dictLabel"
              :value="item.dictValue"
            ></el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="处理结果描述" prop="opinion">
          <el-input type="textarea" v-model="form.opinion" maxlength="320" show-word-limit></el-input>
        </el-form-item>
      </div>
    </el-form>

 2).单独使用 :rules="$rules.handle.opinion"

 
<el-form-item label="处理结果描述" prop="opinion" :rules="$rules.handle.opinion">
       <el-input type="textarea" v-model="form.opinion" maxlength="320" show-word-limit>    </el-input>
</el-form-item>

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值