保留一位小数
export const inputTake2AfterDot =(obj:any)=>{
// return value.toString().match(/^\d+(?:\.\d{0,2})?/)
// 清除"数字"和"."以外的字符
obj.value = obj.value.replace(/[^\d.]/g,"");
// 验证第一个字符是数字
obj.value = obj.value.replace(/^\./g,"");
// 只保留第一个, 清除多余的
obj.value = obj.value.replace(/\.{2,}/g,".");
obj.value = obj.value.replace(".","$#$").replace(/\./g,"").replace("$#$",".");
// 只能输入一个小数
obj.value = obj.value.replace(/^(\-)*(\d+)\.(\d).*$/,'$1$2.$3');
// return Math.round(value*Math.pow(10,2))/Math.pow(10,2)
};
保留两位小数
export const inputTake2AfterDot =(obj:any)=>{
// return value.toString().match(/^\d+(?:\.\d{0,2})?/)
// 清除"数字"和"."以外的字符
obj.value = obj.value.replace(/[^\d.]/g,"");
// 验证第一个字符是数字
obj.value = obj.value.replace(/^\./g,"");
// 只保留第一个, 清除多余的
obj.value = obj.value.replace(/\.{2,}/g,".");
obj.value = obj.value.replace(".","$#$").replace(/\./g,"").replace("$#$",".");
// 只能输入两个小数
obj.value = obj.value.replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3');
// return Math.round(value*Math.pow(10,2))/Math.pow(10,2)
};
区别就在最后
这里我是在 antd 中的Input调用的 如下:
<Input placeholder={'工时'} value={myTaskStore.workingHours} onChange={this.hoursChange} suffix="小时"
onInput={(e:any)=>{
let obj = e.target;
inputTake2AfterDot(obj)
}}
/>