Element-ui 自定义表单验证规则

 

有时在后台我们需要对输入的数值进行简单的正则验证,此时ElementUi 自带的验证已不能满足我们的需求,故需要我们自己去写 验证规则

有两种书写位置:

  • 一种在data中写规则
  • 另一种在methods中写规则

 

表单:

<el-form-item label="需求砍价人数:" prop="haggleNumber">
       <el-input v-model="formData.haggleNumber" clearable>        
       </el-input>
</el-form-item>    

 

方法一: 在data中写规则

data() {
    // 自定义校验规则
    var bargainMoney = (rule, value, callback) => {
      // rule 对应使用bargainMoney自定义验证的 对象
      // value 对应使用bargainMoney自定义验证的 数值 
      // callback 回调函数
      const r = /^\+?[1-9][0-9]*$/; // 正整数
      if (value == null || String(value).trim() === "") {
        callback(new Error("不能为空"));
      } else if (!r.test(value)) {
        callback(new Error("请输入正整数"));
      }else {
        callback();
      }
    };
  
   return {
      formData: {
        haggleNumber: "", // 砍价人数
      },
      rules: {
        haggleNumber: [
          {
            required: true,
            validator: bargainMoney,
            trigger: "blur"
          }
        ],
      }
   }
}

 

方法二: 在methods中写规则

data() {
 return {
      formData: {
        haggleNumber: "", // 砍价人数
      },
      rules: {
        haggleNumber: [
          {
            required: true,
            validator: this.bargainMoney,
            trigger: "blur"
          }
        ],
      }
 }
},
methods: {
    // 自定义校验规则
    bargainMoney(rule, value, callback){
      // rule 对应使用bargainMoney自定义验证的 对象
      // value 对应使用bargainMoney自定义验证的 数值 
      // callback 回调函数
      const r = /^\+?[1-9][0-9]*$/; // 正整数
      if (value == null || String(value).trim() === "") {
        return callback(new Error("不能为空"));
      } else if (!r.test(value)) {
        return callback(new Error("请输入正整数"));
      }else {
        return callback();
      }
    },
}

 

二者的区别在于:

  • 在data 中不需要通过 return 回调函数,而在 methods 中则需要
  • 在methods中写的验证规则 ,需要在rules中配置规则时通过 this获取

 

分享一刻:

  国内数一数二的代码托管平台,一起来为国内开源生态贡献一份力量吧 

  Gitee

 

posted @ 2020-05-12 10:55  银翘解毒片  阅读(4212)  评论(0编辑  收藏  举报