输入框限制输入n位小数

 

复制代码
/**
 * instructions.js
 * 
 * 配合 el-input-number 限制输入框只能输入n位小数
 * <el-input-number v-model="num" :controls="false" v-input-number-limit="2"
 * @input.native="inputNumEvt"
  @change="handleNumberChange" :min="1" :max="10" :precision="2"></el-input-number>


  inputNumEvt(nVal) {
    // 如果有最大、最小数值限制,InputNumber计数器 实时计算需要配合 @change 使用
    // console.log('nVal==', nVal.target.value)
  }
  handleNumberChange(value) {
    console.log(value);
  }
*/
export const inputNumberLimt = {
  bind(el, binding = {}) {
    const { value } = binding
    if (value === null || value === undefined) {
      return
    }
    const target = el instanceof HTMLInputElement ? el : el.querySelector("input");
    target.addEventListener("input", e => {
      let val = e.target.value ? e.target.value.toString() : ''
      if (Number(val) != val && val !== '-') {
        val = val.slice(0,-1)
        val = val.replace(/[^\d^\.]+/g, '')
      } else {
        const decLen = typeof value === 'number' ? value : value.value
        // 小数点 - 长度限制
        if (typeof decLen !== 'undefined' && val) {
          const valArr = val.split('.')
          if (decLen === 0) {
            val = valArr[0]
          } else if (valArr[1] && valArr[1].length > decLen) {
            val = valArr[0] + '.' + valArr[1].substr(0, decLen)
          }
        }
      }
      const max_num = value.maxNumber ? typeConversion(value.maxNumber, 'number') : 1000000000000
      // const max_num = 1000000000000
      // 最大值限制
      if(val > max_num) {
        val = max_num
      }
      e.target.value = val; // 不能在此转Number类型,否则无法输入小数点
    })
  }
}
复制代码
/**
 * main.js 注入自定义指令
 */
import * as instructions from '@/utils/instructions' // 小数点限制指令
Vue.directive('inputNumberLimit', instructions.inputNumberLimt)

 

posted @   日升月恒  阅读(176)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示