2017-01-09 99 views
2

我在学校的网站上工作,我需要制作购物车。当我检查数量是否大于可用数量时,即使它不是真的,也会返回true。例如3> 12是真的,我得到错误信息。 我有拼写错误“可用” ..我知道:( 这里是我的功能:Javascript其他语句不起作用

function add_to_cart() { 

    jQuery ('#modal_errors').html(""); 

    var size = jQuery('#size').val(); 
    var quantity = jQuery('#quantity').val(); 
    var avaliable = jQuery('#avaliable').val(); 
    var error = ''; 
    var data = jQuery('#add_product_form').serialize(); 

    if(size == '' || quantity == '' || quantity == 0){ 
     error +='<p class = "text-danger text-center">You need to select a size and quantity.</p>'; 
     jQuery('#modal_errors').html(error); 
     return; 
    } 
    else if(quantity > avaliable){ 
     error +='<p class = "text-danger text-center">There are only '+avaliable+' avaliable and you asked for '+quantity+'.</p>'; 
     jQuery('#modal_errors').html(error); 
     return; 
    } 
} 

这将返回消息(我的情况):“只有12 avaliable,你问3.

这可能是一个小白错误,但我不能算出它的任何帮助,请

编辑 - ?>>

使用

var quantity = Number.parseInt(jQuery('#quantity').val()); 
var avaliable = Number.parseInt(jQuery('#avaliable').val()); 

和它的作品,但现在又在薄雾IM:d

我得到的值,这样

<div class="form-group"> 
       <div class="col-xs-3"><label for="quantity">Quantity:</label> 
        <input type="number" class="form-control" id="quantity" name="quantity" min="0"></div><br><div class="col-xs-9">&nbsp;</div> 
       </div> 

输入型是数字我认为我不需要从字符串转换为数字。 不是输入类型的数字=一个实际的数字比可以比较或乘法或其他?

感谢您的回答:)

回答

7

因为你quantityavaliable是字符串,而不是数字。并且比较正在经过字符串。

尝试做

var quantity = Number.parseInt(jQuery('#quantity').val()); 
var avaliable = Number.parseInt(jQuery('#avaliable').val()); 

编辑

,或者你可以做解析只有在情况下,如果你想使用它们作为字符串

else if(Number.parseInt(quantity) > Number.parseInt(avaliable)){ 

} 
+2

好奇:为什么'Number.parseInt'而不仅仅是'parseInt'? – Chris

+0

@Chris http://stackoverflow.com/questions/4090518/what-is-the-difference-between-parseint-and-number –

+1

为什么不只是'Number()'? –

0

如在别处指出,你需要将字符串转换为数字,但一旦你这样做,你需要检查他们是否已经成功地转换为数字,尤其是因为你已经检查过的字符串不是空的。 isNaN在这里是一个有用的功能。你可以检查字符串,然后检查数字,如:

function add_to_cart() { 
    var error = ""; 

    var size = jQuery('#size').val(); 
    var quantity = jQuery('#quantity').val(); 
    var avaliable = jQuery('#avaliable').val(); 

    if (size === '' || quantity === '' || avaliable === '') { 
     error += '<p class = "text-danger text-center">You need to select a size and quantity.</p>'; 
    } else { 
     var sizeNum = Number.parseInt(size), 
      quantityNum = Number.parseInt(quantity), 
      avaliable = Number.parseInt(avaliable); 

     if (isNaN(quantityNum) || quantityNum === 0 || isNaN(sizeNum) || sizeNum === 0) { 
      error += '<p class = "text-danger text-center">You need to select a size and quantity.</p>'; 
     } 
     else if (quantityNum > avaliableNum) { 
      error += '<p class = "text-danger text-center">There are only ' + avaliable + ' avaliable and you asked for ' + quantity + '.</p>'; 
     } 
    } 

    jQuery('#modal_errors').html(error); 
}