form表单验证错误提示语太长无法全部展示的问题

项目场景:`

form表单验证错误提示语太长无法全部展示,导致提示语折叠,如下图:
在这里插入图片描述


解决方案:

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
最终效果:
在这里插入图片描述


附录代码:

需要返回错误信息的部分写个空callback(new Error(' '));,用this.quotaNameErrFlag = true;来控制v-show="quotaNameErrFlag"展示错误提示,再给提示语写个样式

直接上热乎的代码:

<el-form class="quota-edit-form" ref="quotaForm" :rules="rule" :model="quotaFormData" label-width="125px" label-position="left">
  <el-form-item prop="quotaName" label="配额名称">
     <el-input v-model="quotaFormData.quotaName" placeholder="请输入" class="form-item-width" maxlength="32"></el-input>
     <div v-show="quotaNameErrFlag" class="quotaname-err-style">
          支持大小写字母、数字、“-”、“.”、“/”、“(”、“)”、“(”、“)”、下划线、中文,不超过32个字
     </div>
  </el-form-item>
  ......

在这里插入图片描述

在需要展示错误信息的输入框下面写个错误提示语句:

<div v-show="quotaNameErrFlag" class="quotaname-err-style">
    支持大小写字母、数字、“-”、“.”、“/”、“(”、“)”、“(”、“)”、下划线、中文,不超过32个字
</div>

定义控制变量:

quotaNameErrFlag: false,

需要返回错误信息的部分写个空callback(new Error(' '));,用this.quotaNameErrFlag = true;看控制v-show="quotaNameErrFlag"展示错误提示,再给提示语写个样式

var validateName = (rule, value, callback) => {
      if (value) {
        if (value === this.quotaFormData.quotaCode) {
          callback(new Error('配额名称与配额编码不能相同'));
        }
        let reg = /^[0-9A-Za-z\u4e00-\u9fa5-./_(())]{0,32}$/;
        if (!reg.test(value)) {
          this.quotaNameErrFlag = true;
          callback(
            new Error(
              ' '
              // '支持大小写字母、数字、“-”、“.”、“/”、“(”、“)”、“(”、“)”、下划线、中文,不超过32个字'
            )
          );
        } else {
          this.quotaNameErrFlag = false;
        }
        callback();
      } else {
        callback(new Error('请输入配额名称'));
      }
    };

在这里插入图片描述

样式:

.quotaname-err-style {
  color: #f56c6c;
  font-size: 12px;
  width: 450px;
  margin-bottom: -19px;
  line-height: 18px;
}

附加代码:

export default {
  data() {
    var validateName = (rule, value, callback) => {
      if (value) {
        if (value === this.quotaFormData.quotaCode) {
          callback(new Error('配额名称与配额编码不能相同'));
        }
        let reg = /^[0-9A-Za-z\u4e00-\u9fa5-./_(())]{0,32}$/;
        if (!reg.test(value)) {
          this.quotaNameErrFlag = true;
          callback(
            new Error(
              ' '
              // '支持大小写字母、数字、“-”、“.”、“/”、“(”、“)”、“(”、“)”、下划线、中文,不超过32个字'
            )
          );
        } else {
          this.quotaNameErrFlag = false;
        }
        callback();
      } else {
        callback(new Error('请输入配额名称'));
      }
    };
    var validateCode = (rule, value, callback) => {
      if (value) {
        if (value === this.quotaFormData.quotaName) {
          callback(new Error('配额编码与配额名称不能相同'));
        }
        let reg = /^[0-9A-Za-z\u4e00-\u9fa5-._]{0,32}$/;
        if (!reg.test(value)) {
          callback(
            new Error(
              '支持大小写字母、数字、“-”、“.”、下划线、中文,不超过32个字'
            )
          );
        }
        callback();
      } else {
        callback(new Error('请输入配额编码'));
      }
    };
    var checkLevel = (rule, value, callback) => {
      var reg = /^[0-9]{1}$/;
      if (!value) {
        return callback();
      } else if (!reg.test(value)) {
        return callback(new Error('配额级别只能为一位数字'));
      } else {
        return callback();
      }
    };
    return {
     
      rule: {
        quotaName: [
          {
            required: true,
            validator: validateName,
            trigger: ['blur', 'change'],
          },
        ],
        quotaCode: [
          {
            required: true,
            validator: validateCode,
            trigger: ['blur', 'change'],
          },
        ],
        regionId: [
          { required: true, message: '请选择节点', trigger: 'change' },
        ],
        productCode: [
          { required: true, message: '请选择产品', trigger: 'change' },
        ],
        limitValue: [
          { required: true, message: '请输入配额数量', trigger: 'blur' },
          { pattern: /^\d+$/, message: '配额数量为非负整数' },
        ],
        level: [{ validator: checkLevel, trigger: 'blur' }],
      },
      rules: {
        productCode: [
          { required: true, message: '请选择产品', trigger: 'blur' },
        ],
      },
      formLabelWidth: '120px',
      quotaNameErrFlag: false,
    };
  },
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值