element 自定义验证及验证同时在规则里为字段赋值

有时候element的表单验证无法满足我们都的需求,我们就需要写自定义验证。

现有如下需求,需要验证某个输入的字段是否含有不位于首尾的“.”字符,同时在末尾加上字符串“哈哈哈”,

实现:

使用element自定义的自定义验证,首先在页面中写入

<el-form  status-icon ref="subform" class="demo-ruleForm" :model="subform"
         :rules="rules"><el-form-item prop='str' label="自定义验证:" status-icon required>
  <el-col :span="16">
    <el-input type="text" v-model="subform.str"></el-input>
  </el-col>
</el-form-item>
</el-form>
// status-icon 是验证结果的显示效果,验证成功会显示绿色,验证失败显示红色
// required   是必填项的标识,加上这个会在输入框前边显示红色*,说明必填
rules: {
  code: [
    {validator: validateCode,trigger: "blur"}
  ],
}

validateCode就是自己定义的规则,在验证函数里控制台打rule,会发现rule里有字段field,我们可以拿这个字段进行赋值

data() {  
// 指标code“.”的自定义验证
      var validateCode = (rule, value, callback) => {
        if (value.indexOf(".")==-1) {
          callback(new Error('请输入带有字符 . 的指标CODE'));
        }
        else if(value.indexOf(".")==0||value.indexOf(".")==value.length-1){
          callback(new Error('字符 . 不能位于起始位置和终止位置'));
        }else {
         
           var field=rule.field;
          this.form[field]=value+"哈哈哈";
          callback();
        }
      };
}

在data里,return外写自定义验证

其中value.indexOf("."),获得.的位置,如果是-1,说明不存在

callback(new Error());里面的是当验证不通过时显示的内容,注意要把else{

callback}写上,不然不显示验证通过的样式。

验证成功后,通过rule.field拿到调用函数对象对应的字段名,也就是rules里的prop,然后用this.form[field]赋值,想咋处理咋处理,哈哈哈。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值