首先是我的代码,
$(function() {
var fee_percent = parseFloat('<?php echo $gateway["gateway_fees"]; ?>');
var fee_fixed = parseFloat('<?php echo $gateway["gateway_fixed_fees"]; ?>');
var min = parseFloat('<?php echo $gateway["min_invest_limit"]; ?>');
var max = parseFloat('<?php echo $gateway["max_invest_limit"]; ?>');
$("#amountId").on('change keyup keydown', function() {
var $this = $(this);
var val = parseFloat($this.val());
val = val.toFixed(5);
var valid = true;
var fee = parseFloat(val * fee_percent / 100) + fee_fixed;
fee = fee.toFixed(5);
var final_amount = val - fee;
final_amount = final_amount.toFixed(5);
console.log("value: " + val);
console.log("fee: " + fee);
console.log("final: " + final_amount);
console.log("min: " + min.toFixed(5));
console.log("max: " + max.toFixed(5));
if(val <= 0 || isNaN(val) || fee > val || val < min.toFixed(5) || val > max.toFixed(5)) fee = final_amount = 0;
$("#depositFee").html(fee);
$("#depositAmountFinal").html(final_amount);
});
});
现在我的问题是,
val > max.toFixed(5)
这总是返回TRUE。
以下是控制台响应:
值:11.00000 费用:0.46000 决赛:10.54000 min:10.00000 最大值:10000.00000
所以值是11,最大值是10000,那为什么它是假的?
如果不清楚,请询问,谢谢。
更新:当我输入10,100或1000等时,它可以正常工作。
如果我不使用max.toFixed(5)
但是我只使用max
,那么一切正常,但是当我最后输入5的值时,如55,65,75等等,条件再次成为现实,应该返回假。
答案 0 :(得分:2)
toFixed
返回String。
所以"11" > "10000"
会返回true
因为。{ 1后跟1大于1后跟0
您可以在控制台中尝试:
"01" > "0001"
会返回true
,这也是基于相同的概念。
要避免它:
parseFloat(val) > parseFloat(max.toFixed(5))
答案 1 :(得分:0)
如果我理解你是对的:
val = 11;
max = 10000;
if(val > max)
if(11 **is greater than** 10000)
它应该返回false。 11不高于10,000。