有两个字段 - faceValue fv2
和askPrice num2
- 而且askPrice不能超过faceValue。
检查几乎正常,但面值为10.00时,警报仅在要价为1.00(9.00,8.00等等触发它时)时触发。但是,当fv2重新加载到表格时它是正确的 - 10.00。
如何解决此问题?这是代码
// new askingPrice comparison
var fv2 = parseFloat($('.ticketFaceValue').val()).toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, '$1,');
var num2 = parseFloat($(this).val()).toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, '$1,');
if (num2 < fv2) {
alert('Sorry, your asking price can\'t be less than face value. Please change your asking price.');
$(this).val(fv2);
row.find('.askingPriceData').html(fv2);
recalculateFees();
}
// end new askingPrice comparison
答案 0 :(得分:0)
虽然您使用parseFloat
将输入字符串转换为数字类型,但您将其转换回toFixed
字符串,因此比较是基于字符的,而不是数值。
您尝试使用replace
(添加数千个分隔符)的操作也可以使用toLocaleString
完成,但您需要注意不要将格式化的字符串放回input
1}}元素,因为它不会解析为数字。对数值和格式化值使用单独的变量可能更好。也许是这样的:
var fv2 = +$('.ticketFaceValue').val()
var num2 = +$(this).val();
var fv2Fmt =fv2.toLocaleString('en-US', {minimumFractionDigits: 2, maximumFractionDigits: 2});
var num2Fmt =num2.toLocaleString('en-US', {minimumFractionDigits: 2, maximumFractionDigits: 2});
if (num2 < fv2) {
alert('Sorry, your asking price can\'t be less than face value. Please change your asking price.');
$(this).val(fv2);
row.find('.askingPriceData').html(fv2Fmt);
recalculateFees();
}