效果可以参考港股选股器_香港股票筛选查询工具 - 富途牛牛
<Input
suffix="%"
className={styles['wmx-select-token__input']}
placeholder="0.00"
value={minValue1}
onChange={minChange1}
// onKeyUp={minChange1}
onBlur={clearNoNum1}
/>
const [minValue1, setMinValue1] = useState('');
const minChange1 = (e: any) => {
setMinValue1(e.target.value);
};
const clearNoNum1 = (e: any) => {
const checkPlan = clearNoNum(e.target.value);
setMinValue1(checkPlan);
};
const clearNoNum = (e: any) => {
let checkPlan = '' + e;
const t = checkPlan.charAt(0); //得到第一个字符是否为负号
checkPlan = checkPlan
.replace(/[^\d.]/g, '') // 清除“数字”和“.”以外的字符
.replace(/\.{2,}/g, '.') // 只保留第一个. 清除多余的
.replace(/^\./g, '') // 保证第一个为数字而不是.
.replace('.', '$#$')
.replace(/\./g, '')
.replace('$#$', '.');
if (checkPlan.indexOf('.') < 0 && checkPlan !== '') {
// 以上已经过滤,此处控制的是如果没有小数点,首位不能为类似于 01、02的金额
checkPlan = parseFloat(checkPlan) + '';
} else if (checkPlan.indexOf('.') >= 0) {
checkPlan = checkPlan.replace(/^(-)*(\d+)\.(\d\d).*$/, '$1$2.$3'); // 只能输入两个小数
}
if (Number(checkPlan) > 999999.99) {
checkPlan = '999999.99';
}
//如果第一位是负号,则允许添加
if (t == '-') {
checkPlan = '-' + checkPlan;
}
return checkPlan;
};
这样就实现了 antd input输入框限制数字,包括负数,且保留两位小数的功能