2013-07-17 111 views
0

我的HTML結構:在數量和產品價格,總價格更新的基礎

<div class="pricesection"> 
     <label id="productPrice"> 
     <strong> 
     <span id="totalprice"> 129,00</span> 
     <span>$</span> 
     </strong> 
     </label> 
     <input type="text" value="1" name="am" id="quantity"> 
     <button class="submitbtn" type="submit">add to Cart</button> 
</div> 

我的JS代碼:

$('#quantity').keyup(function(){ 
    $('#quantity').each(function() { 
    var qty = $('#quantity').val(); 
    var price = $('#totalprice').val(); 
    var total = price * qty; 
    }); 

    $('#totalprice').html(total); 
}); 

我發現有很多的例子,不適合。 :-(

進入數量項目價格後,將自動更新。如果「0」,字母,「空」或取消原價必須恢復之後。

我總是得到「0」值回!

我任何幫助非常感謝!

+0

有沒有需要每種方法。把它擺脫。 –

回答

0

嘗試

var $totalprice = $('#totalprice'); 
var price = parseInt($.trim($totalprice.text()).replace(',', '.')); 
$totalprice.data('totalprice', price); 
$('#quantity').keyup(function(){ 
    var qty = this.value; 
    var price = $totalprice.data('totalprice'); 
    var total = price * qty; 

    $totalprice.html(total ? total : price); 
}); 

注:數字格式不完成

+0

如何重新格式化如何更新價格? 19.351,50 –

0
var price = $('#totalprice').val();//this is wrong!!! 

得到span.Not的html

var price = $('#totalprice').text();//this is the correct syntax 

所以,你的代碼becomes--:

$('#quantity').keyup(function() { 
     var qty = $('#quantity').val(); 
     var price = parseInt($('#totalprice').text()); //or $('#totalprice').html() 
     var total = price * qty; 
     $('#totalprice').html(total); 
    }); 
+0

謝謝!我怎樣才能原價(129)還原如果輸入字段爲「0」,輸入字母和空白字段。 ? http://jsfiddle.net/Uk9t2/ –

+0

即使有些身體將值從1改爲0,129也應該保持爲129?這就是你正在解釋的嗎? –

+0

問題解決了嗎?如果是的話:選擇正確的答案,如果沒有:詳細說明它,以便我可以解決問題 –

0

試試這個........ HTML

<div class="pricesection"> 
     <input type="text" id="productPrice"/> 
     <strong> 
     <span id="totalprice"> 129,00</span> 
     <span>$</span> 
     </strong> 
     <input type="text" value="1" name="am" id="quantity"> 
     <button class="submitbtn" type="submit">add to Cart</button> 
</div> 

.............. .JS ........

$('#quantity').keyup(function(){ 
    var qty = $('#quantity').val(); 
    var price = $('#productPrice').val(); 
    var total = price * qty; 

    $('#totalprice').html(total); 
}); 
0

爲什麼在#quantity上有一個循環?你不需要那個。嘗試下面的代碼。

$('#quantity').keyup(function() { 
    var qty = $('#quantity').val(); 
    var price = parseInt($('#totalprice').text()); 
    var total = price * qty; 
    $('#totalprice').html(total); 
}); 

通知parseInt($('#totalprice').text()); .val()不跨度工作,所以你將不得不使用.text()和解析結果INT

0

您的第一個問題lem是totalprice是一個跨度,所以它沒有.val()函數(僅用於輸入),而是使用.text()

範圍的內容當前有一個逗號,它不會自動分析成數字。您需要使用parseFloat(),並且您需要使用小數點,而不是逗號。

parseFloat("129,50")是129
parseFloat("129.50")是129.50

其次,你正在做的each在你的數量字段,但只有一個。也許你想要一個未來的(在這種情況下,你應該使用類未標識),但這裏的一些JS應該實現你想要的功能,並修復漏洞以及(未經測試):

$('#quantity').keyup(function(){ 
    var qty = $('#quantity').val(); 
    if (qty && qty > 0){ 
     var price = parseFloat($('#totalprice').text()); 
     var total = price * qty; 
     $('#totalprice').text(total); 
    } 
    else{ 
     //Find a better way of restoring this value 
     $('#totalprice').text("129.50"); 
    } 
}); 

希望這有助於。:)