jQuery / JavaScript有一个奇怪的问题。我正在使用此代码:
var minimumPercent = $('.donationTextBox').val();
$('.donationTextBox').change(function() {
var donationAmount = parseFloat($('.donationTextBox').val());
donationAmount = donationAmount.toFixed(2);
if(donationAmount < minimumPercent || donationAmount == "NaN") {
$('.donationTextBox').val(minimumPercent);
}
else {
$('.donationTextBox').val(donationAmount);
}
});
我写的这段代码改变了输入框(文本)的值,所以用户输入的值是金钱格式(EG:96.49),并检查以确保它不低于金额minimumPercent
。如果是,那么它会将值更改为minimumPercent
我遇到的问题是,如果minimumPercent
保持2.50且用户输入100.00,则由于某些奇怪的原因,它假定100.00低于2.50。虽然,200.00工作正常。
有什么想法吗?谢谢你的帮助!
答案 0 :(得分:3)
设置minimumPercent时尝试ParseFloat。
var minimumPercent = ParseFloat($('.donationTextBox').val());
我认为引擎正在将一个字符串与一个浮点数进行比较,从而将你的浮点数转换回一个字符串,当你这样做时,100.00&lt; 2.50 = true从左到右按字母顺序比较。
麦克
答案 1 :(得分:1)
并且使用toFixed会将你的浮点值转换为字符串,所以为了比较,总是浮动值
var minimumPercent = parseFloat($('.donationTextBox').val());
$('.donationTextBox').change(function() {
var donationAmount = parseFloat($('.donationTextBox').val());
if(donationAmount < minimumPercent || donationAmount == "NaN") {
$('.donationTextBox').val(minimumPercent.toFixed(2));
}
else {
$('.donationTextBox').val(donationAmount.toFixed(2));
}
});