javascript - 验证出错
问题描述
我有一个文本输入,它接受任何可被 500 个示例整除的数字,例如 1000、1500、2000、2500 3000 等。如果用户写 12263,它应该显示 12000,如果用户写 12789,它应该是 12500
我有这个代码,但它根本不起作用,在某些数字上工作正常,但在其他数字上它只是达到最大数字
vPayrollBureauMaxOffer:是可以接受的最大数量,我从 api 获取这个值 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}
/>
解决方案
这听起来像是你有vPayrollBureauMaxOffer = "250000";
需要的时候vPayrollBureauMaxOffer = 250000;
,它正在做字符串比较, where "50000" > "250000"
, but 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))}
推荐阅读
- javascript - Javascript 承诺在此之前不等待解决
- c# - 如何将 IronPython 正确导入 Unity
- lua - 使用 lua 在文件中写入特定字节
- python - 使用 Psycopg2 的失败事务是否会导致 SQL 约束停止表现为延迟?
- python - C 结构的 Python SWIG 包装器中的深拷贝
- azure - 如何将 Strapi 部署到 Azure?
- python - python Ginput在spyder中工作但不能从终端或命令窗口工作
- c# - 如何在 C# 中添加 2 个二进制 int 数组
- php - Woocommerce 自定义产品类型不会在页面重新加载时显示
- python - 基于最大子属性的排序模型(具有潜在联系) - Django