2017-01-09 127 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); 
}