非负值,最大值≥最小值,最大9999,小数点后三位(负号是符号,不允许输入,所以提示只允许输入数字即可)

在这里插入图片描述

<div class="extreme-value">
              <el-input v-model="tableParams.taskName1" placeholder="最小值" @blur="handleBlur('taskName1',tableParams.taskName1)" @input="handleInput('taskName1',tableParams.taskName1)"></el-input>
              ~
              <el-input v-model="tableParams.taskName2" placeholder="最大值" @blur="handleBlur('taskName2',tableParams.taskName2)" @input="handleInput('taskName2',tableParams.taskName2)"></el-input>
            </div>
 tableParams: {
        taskName1: "",
        taskName2: "",
      },
 handleInput(nameVal, value) {
      // 将输入值转换为数字类型
      const num = Number(value);
      // 是否 是小数
      let decimals = containsDecimalPoint(this.tableParams[nameVal]);
      // 如果输入值不是数字,则设置为空字符串
      if (isNaN(num)) {
        this.$message({
          showClose: true,
          message: "仅允许输入数字",//负号是符号,不允许输入,所以提示只允许输入数字即可
          iconClass: "warning-icon-class",
          customClass: "el-message--warning",
        });
        this.tableParams[nameVal] = "";
      } else {
        // 如果输入值大于9999,则只保留前四位数,多余输入的不保留
        if (num > 9999) {
          this.$message({
            showClose: true,
            message: "仅允许输入最大值为9999",
            iconClass: "warning-icon-class",
            customClass: "el-message--warning",
          });
          this.tableParams[nameVal] = value.slice(0, 4);
        } else {
          // 如果不是小数,则按照所输入即可, 如果是小数,则保留小数点后三位
          if (decimals) {
            // 是小数
            // 判断小数点后有几位,如果是小于等于3位,可以保留,如果是大于3位,则截取前三个就行
            let digit = getDecimalPlaces(value);
            if (digit > 3) {
              this.$message({
                showClose: true,
                message: "仅允许输入小数点后3位",
                iconClass: "warning-icon-class",
                customClass: "el-message--warning",
              });
              this.tableParams[nameVal] = value.slice(0, -1);
            }
          }
        }
      }
    },
    // 输入框失去焦点时,如果数字最后是小数点,则给去掉,只显示数字就行
    handleBlur(nameVal, val) {
      // 是否 是小数
      let decimals = containsDecimalPoint(val);
      if (decimals) {
        // 是小数
        // 判断小数点后有几位,如果是小于等于3位,可以保留,如果是大于3位,则截取前三个就行
        let digit = getDecimalPlaces(val);
        if (digit == 0) {
          this.tableParams[nameVal] = val.slice(0, -1);
        }
      }
      this.getCompare(this.tableParams.taskName1, this.tableParams.taskName2);
    },
    // 判断最大值是否大于等于最小值
    getCompare(minVal, maxVal) {
      if (minVal && maxVal) {
        if (maxVal < minVal) {
          this.$message({
            showClose: true,
            message: "最大值必须大于等于最小值",
            iconClass: "warning-icon-class",
            customClass: "el-message--warning",
          });
        }
      }
    },

::v-deep .extreme-value {
  width: 220px;
  height: 32px;
  border-radius: 4px;
  border: 1px solid #e1e6f0;
  display: flex;
  align-items: center;
  justify-content: space-between;

  .el-input {
    width: 100px;
    height: 30px !important;
    display: flex;
    align-items: center;

    input::-webkit-outer-spin-button,
    input::-webkit-inner-spin-button {
      -webkit-appearance: none;
    }

    input[type="number"] {
      -moz-appearance: textfield;
      line-height: 1; //输入文字的话,光标居中
    }

    inpit {
      border: none;
    }

    .el-input__inner {
      width: 100px;
      height: 30px !important;
      line-height: 30px;
      text-align: center;
      border: none;
    }
  }
}

.extreme-value:hover {
  border: 1px solid #3886ff;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值