Jquery条件不起作用

Rev*_*ant 2 javascript jquery conditional-statements

我正在修建一个由其他人编码的网站.代码真的很乱,所以我担心我不能在这里发布所有内容,但我相信我提供了足够的信息供你查看可能出错的内容.因为此时我迷失了.

1.我们得到最小和最大限制

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;
        });
    });
Run Code Online (Sandbox Code Playgroud)

getlimits.php OutPut:

{"10":"15000"}
Run Code Online (Sandbox Code Playgroud)

我们检查限制

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;
}
Run Code Online (Sandbox Code Playgroud)

记录结果;

800 - Max : 15000 Min : 10
Run Code Online (Sandbox Code Playgroud)

我打了800个单位.它不应该给出任何错误,但我得到以下错误;

您不能订购超过15000个单位.

我真的迷路了.日志显示正确的值,getlimits.php返回正确的值,但如果&条件不起作用.

如果有人能帮我解决这个问题,我将很高兴.

先感谢您.

Kok*_*kos 7

amount当你抓住它时,它不是一个整数.val().

所以调整这一行:

amount = $('#quantity', this).val();
Run Code Online (Sandbox Code Playgroud)

amount = parseInt($('#quantity', this).val());
Run Code Online (Sandbox Code Playgroud)

正如Dennis所指出的那样,你将不得不parseInt从JSON中获取你所获得的值.(min_limitmax_limit).

正如Dennis所指出的那样,你应该添加10第二个参数来parseInt确保它以十进制数分析.

所以:

$.each(data, function(key, val) {
    min_limit = parseInt(key,10);
    max_limit = parseInt(val,10);
});

amount = parseInt($('#quantity', this).val(),10);
Run Code Online (Sandbox Code Playgroud)

  • 确实.@Pixeler,你所看到的根本原因是字符串"800"不在字母"10"和"15000"之间*字母*顺序,这是你正在测试的. (3认同)
  • JSON键是字符串,因此这也是必要的.它还有助于为parseInt()提供10作为第二个参数,因此可以保证解析为十进制数(不是八进制,十六进制等...) (2认同)