我有一个文本输入,可以接受任何可以被500整除的数字,例如1000,1500,2000,25003000等等。如果用户写12263,它应该显示12000,如果用户写12789,它应该是12500
我有这个代码,但它根本不工作,在一些数字工作很好,但与其他它只是去最大数字
vPayrollBureauMaxOffer:是可以接受的最大值我从一个接口获取此值vPayrollAmount:是用户在文本中写入的数量输入3000是可接受的最小值如果用户写入的数字小于3000,则应更改为3000
例如,假设最大数字是250000,当我写50000时,它会变成250000,如果我写4000,它也会变成250000,我已经看到只有小于100000的数字才会发生这种情况,我不知道会发生什么
这是我的代码
const validatePayroll = () => {
if(vPayrollAmount <= 3000){
return setvPayrollAmount((3000));
}
if(vPayrollAmount >= vPayrollBureauMaxOffer){
return setvPayrollAmount(vPayrollBureauMaxOffer);
}
if((vPayrollAmount >= 3000) && (vPayrollAmount <= vPayrollBureauMaxOffer)){
return setvPayrollAmount(Math.floor(vPayrollAmount / 500.0) * 500.0);
}
};
<TextInput
style={styles.inputs}
placeholder={vPayrollAmount.toString}
placeholderTextColor={theme.SECONDARY_TEXT_COLOR}
keyboardType={'numeric'}
underlineColorAndroid="transparent"
autoCorrect={false}
autoCapitalize="characters"
value={vPayrollAmount}
onBlur={() => validatePayroll(vPayrollAmount)}
onChangeText={setvPayrollAmount}
/>发布于 2021-05-28 00:52:50
这听起来像是vPayrollBureauMaxOffer = "250000";,当它需要为vPayrollBureauMaxOffer = 250000;时,它正在进行字符串比较,其中是"50000" > "250000",但却是50000 < 250000。
快速解决方案就是这样做:
const validatePayroll = () => {
if(vPayrollAmount <= 3000){
return setvPayrollAmount((3000));
}
if(vPayrollAmount >= parseInt(vPayrollBureauMaxOffer)){
return setvPayrollAmount(vPayrollBureauMaxOffer);
}
if((vPayrollAmount >= 3000) && (vPayrollAmount <= parseInt(vPayrollBureauMaxOffer))) {
return setvPayrollAmount(Math.floor(vPayrollAmount / 500.0) * 500.0);
}
};
onBlur={() => validatePayroll(parseInt(vPayrollAmount))}https://stackoverflow.com/questions/67726510
复制相似问题