Javascript Jquery条件不起作用
我正在修复一个由其他人编码的网站。代码真的很混乱,所以我恐怕不能把它全部发布在这里,但我相信我提供了足够的信息,让你看到什么可能是错误的。因为在这一点上我迷路了 1。我们得到最小和最大限制Javascript Jquery条件不起作用,javascript,jquery,conditional-statements,Javascript,Jquery,Conditional Statements,我正在修复一个由其他人编码的网站。代码真的很混乱,所以我恐怕不能把它全部发布在这里,但我相信我提供了足够的信息,让你看到什么可能是错误的。因为在这一点上我迷路了 1。我们得到最小和最大限制 parent_id = '<?php echo $parent_id; ?>'; api = '<?php echo $api; ?>'; $.getJSON('getlimits.php', {'id': ""+parent_id+"", 'api': ""+api+""},
parent_id = '<?php echo $parent_id; ?>';
api = '<?php echo $api; ?>';
$.getJSON('getlimits.php', {'id': ""+parent_id+"", 'api': ""+api+""}, function(data) {
// Loop and assign Json (returned value) to our limit variables
$.each(data, function(key, val) {
min_limit = key;
max_limit = val;
});
});
amount = $('#quantity', this).val();
console.log(amount + ' - Max : ' + max_limit + ' Min : ' + min_limit);
if ( amount < min_limit) {
displayError("You can't order less than " + min_limit + " units",2000);
return false;
}
else if ( amount > max_limit ) {
displayError("You can't order more than " + max_limit + " units.",2000);
return false;
}
2。我们检查限制
parent_id = '<?php echo $parent_id; ?>';
api = '<?php echo $api; ?>';
$.getJSON('getlimits.php', {'id': ""+parent_id+"", 'api': ""+api+""}, function(data) {
// Loop and assign Json (returned value) to our limit variables
$.each(data, function(key, val) {
min_limit = key;
max_limit = val;
});
});
amount = $('#quantity', this).val();
console.log(amount + ' - Max : ' + max_limit + ' Min : ' + min_limit);
if ( amount < min_limit) {
displayError("You can't order less than " + min_limit + " units",2000);
return false;
}
else if ( amount > max_limit ) {
displayError("You can't order more than " + max_limit + " units.",2000);
return false;
}
我打了800个单位。它不应该给出任何错误,但我得到以下错误
您不能订购超过15000台。
我真的迷路了。日志显示正确的值,getlimits.php返回正确的值,但如果条件不起作用则返回if&else
如果有人能帮我解决这个问题,我会很高兴的
提前谢谢。
通过.val()
获取金额时,金额不是整数
因此,调整这条线:
amount = $('#quantity', this).val();
到
正如Dennis所指出的,您还必须parseInt
从JSON中获取的值。(min\u limit
和max\u limit
)
正如Dennis还指出的,您应该添加10
作为parseInt
的第二个参数,以确保它解析为十进制数
因此:
确保调用parseInt(number,10)
获取数值变量。看起来您正在比较字符串,这将给出与比较数字不同的结果。第二个参数(10)是基数,它将确保获得十进制值
您需要对min_limit和max_limit以及.val()
调用执行此操作,该调用将始终返回字符串。这是因为您正在对字符串进行比较:
"800" > "15000" === true
您需要使用parseInt将至少一个(最好是两个)转换为数字:
$.each(data, function(key, val) {
min_limit = parseInt(key);
max_limit = parseInt(val);
});
amount = parseInt($('#quantity', this).val());
您确定每个值都是int吗?尝试解析条件之前的每个值@Pixeler,你看到的最根本的原因是字符串“800”不是按字母顺序排列在字符串“10”和“15000”之间,这就是你要测试的。JSON键是字符串,所以这也是必要的。它还帮助提供10作为parseInt()的第二个参数,因此可以保证将其解析为十进制数(而不是八进制、十六进制等)
"800" > "15000" === true
$.each(data, function(key, val) {
min_limit = parseInt(key);
max_limit = parseInt(val);
});
amount = parseInt($('#quantity', this).val());