【VUE禁止输入框输入小数点】

有一些需求,需要用户输入数字时,只能输入正整数,禁止输入出现小数情况

<el-input
            v-model="indexInfo.score"
            class="input-info"
            type="number"
            style="width: 54%;margin-left:42px;"
            :disabled="indexFlag"
            placeholder="请输入"
            min="0"
            max="9999"
            @input="value => indexInfo.score = getRightVal(indexInfo.score)"
            @blur="validateSingle(indexInfo.score,'score');value => indexInfo.score = getRightVal(indexInfo.score)"
          />

@input在输入框内容发生变化后触发,调用getRightVal()函数,实现对输入框的字符判断

getRightVal(val) {
      // 不合法类型、0、负数返回0
      if(val === "" || val <= 0) {
        return 0;
      }
      // 超过9999返回9999
      if(val > 9999) {
        return 9999;
      }
      // 取正整数
      val = parseInt(val);
      // 转换异常返回0
      if(isNaN(val)) {
        return 0;
      }
      // 返回正整数
      return val;
    },

通过函数判断,可以方便后续更改和维护

第二种方案

 <el-input
            v-model="indexInfo.score"
            class="input-info"
            type="integer"
            style="width: 54%;margin-left:42px;"
            :disabled="indexFlag"
            placeholder="请输入"
            @oninput="this.value = this.value.replace(/\D|\./g, '');if(value>9999)value=9999;if(value<0)value=0"
            @input="validateSingle(indexInfo.score,'score')"
          />

通过正则表达式——”this.value = this.value.replace(/\D|\./g, '');“ 来限制小数点的输入。

在type="number"的情况下实践之后,又出现了一个小问题,这样子确实会禁止小数点的输入,但是输入框的光标位置会随着左右移动。

所以将type="number"改为type="integer"。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值