input限制只能输入数字,且保留小数后两位

<el-form-item label="海运运费系数">
              <el-input
                v-model.trim="ruleForm.oceanFreightCoefficient"
                maxlength="8"
                @keyup.native="value=oninput(value)"
                @change="value=oninput(value)"
              ></el-input>&nbsp;&nbsp;
              <span>元/千克</span>
 </el-form-item>
oninput(num) {
          console.log(num)
            var str = num
            var len1 = str.substr(0, 1)
            var len2 = str.substr(1, 1)
            var lenLast=str.substr(str.length-1)
            //如果第一位是0,第二位不是点,就用数字把点替换掉
            if (str.length > 1 && len1 == 0 && len2 != ".") {
                str = str.substr(1, 1)
            }
            //第一位不能是.
            if (len1 == ".") {
                str = ""
            }
            //最后一位不能是.
            if (str.length==8&&lenLast == ".") {
                str = ""
            }
            //限制只能输入一个小数点
            if (str.indexOf(".") != -1) {
                var str_ = str.substr(str.indexOf(".") + 1)
                if (str_.indexOf(".") != -1) {
                    str = str.substr(0, str.indexOf(".") + str_.indexOf(".") + 1)
                }
            }
            //正则替换
            str = str.replace(/[^d^.]+/g, '') // 保留数字和小数点
            //str = str.replace(/.ddd$/,'') // 小数点后只能输两位
            str = str.replace(/^D*([0-9]d*.?d{0,2})?.*$/,'$1') // 小数点后只能输 2 位
            return str
}        
原文地址:https://www.cnblogs.com/llllpzyy/p/13986569.html