输入限制整数15 小数两位,并三位分割

396 阅读1分钟

<a-input addonAfter="元" autocomplete="off" @input="checkInput($event)" @keyup="formValidator" id="singleMaxAmount" placeholder="请输入" v-decorator="['singleMaxAmount',{rules:[{required:false,validator:checkMaxAmount}],initialValue:queryData.singleMaxAmount?this.moneySplice(Number(queryData.singleMaxAmount)):undefined}]" />

                 checkInput (e) {
        let value = e.target.id
        console.log(value)
        let data = this.form.getFieldsValue([value])[value]
        let inputVlue = this.dealInputVal(data)
        this.form.setFieldsValue({ [value]:inputVlue })

    },
    dealInputVal (value) {
        value = value.replace(/^0*(0\.|[1-3])/, '$1')
        value = value.replace(/[^\d.]/g, '') //清除"数字"和"."以外的字符
        value = value.replace(/^\./g, '') //验证第一个字符是数字而不是字符
        value = value.replace(/\.{1,}/g, '.') //只保留第一个.清除多余的
        value = value
            .replace('.', '$#$')
            .replace(/\./g, '')
            .replace('$#$', '.')
        value = value.replace(/^(\-)*(\d*)\.(\d\d).*$/, '$1$2.$3') //只能输入两个小数
        value =
            value.indexOf('.') > 0
                ? value.split('.')[0].substring(0, 15) + '.' + value.split('.')[1]
                : value.substring(0, 15)
        value = value.replace(/(\d{1,3})(?=(\d{3})+(?:$|\.))/g, '$1,') //只能输入两个小数

        return value
    },