2011-05-03 34 views
2

這可能已經回答過,但我找不到可行的解決方案。加載一個輸入框的負載

我需要添加小計輸入框並將它們輸出爲grandTotal。聽起來很簡單,我認爲它會,但由於某種原因,我無法讓它正常工作。

要保存我創建了一個的jsfiddle時間 - http://jsfiddle.net/wgrills/hKxgU/4/

編輯:對不起是在發帖的問題差。

我錯過了大部分的項目,因爲我想加快jsfiddle。我更新了jsFiddle - http://jsfiddle.net/wgrills/hKxgU/7/

如果您單擊+或 - 按鈕小計更改,這是很好的。但我無法獲得#grandTotal輸入來更新。問題似乎與:

var grandTotal = 0; 
$(".subtotal").each(function() { 
    $(this).css("border-color","#f00"); 
    grandTotal += $(this).val.split("£")[1]; 
}); 
$("#grandTotal").val("£" + grandTotal); 
alert(grandTotal); 

js的一部分。注意css邊界的變化,並且警報就在那裏,以確保腳本正常工作。

代碼是所有的早期,這只是一個快速的模擬。

+0

請解釋在jsFiddle演示中重現問題的步驟,並在此處發佈代碼的相關部分。 – 2011-05-03 11:11:29

+0

您是否指分項?像在下面添加另一個項目,如「coka可樂」? – Val 2011-05-03 11:22:19

+0

更新原文。請參閱上面的編輯。對不起 – wgrills 2011-05-03 12:08:33

回答

1

你給了兩個問題,很容易解決!

你是正確的,你張貼上面的那一塊是問題的一部分。特別是行:

grandTotal += $(this).val.split("£")[1]; 

你錯過VAL後(),因此代碼在這裏打破,因爲它不知道什麼.val.是。

此外,您發佈的代碼是在return false;之後,這有效地告訴該功能已完成,不要在該行之後執行任何操作。

然而,當你需要的代碼段在兩種功能(點擊)它的價值它包裹在它自己的功能:

function updateGrandTotal() { 
    var grandTotal = 0; 
    $(".subtotal").each(function() { 
     $(this).css("border-color", "#f00"); 
     grandTotal += parseFloat($(this).val().split("£")[1]); 
    }); 
    $("#grandTotal").val("£" + grandTotal); 
    alert(grandTotal); 
} 

,並調用它,你通知功能,其完成之前:

updateGrandTotal(); 
return false; 

See it partially working here

然而,儘管這將在項目上的加工作,你還有另外一個問題,當你濫用一件物品時,箱子變爲零,而不是設置£0.00,你把它設置爲0,因此,當它嘗試拆分"£"時,它不能。爲了解決這個問題簡單地複製位,你把你的價格值陷入價格從plus功能到minus功能:

替換:

newprice = price * x; 
$('#' + update).val(x); 
$('#' + update + '_subtotal').val(newprice); 

與工作版本:

newprice = (price * x)/100; 
newprice = newprice.toFixed(2); 
newprice = '£' + newprice; 
$('#' + update).val(x); 
$('#' + update + '_subtotal').val(newprice); 

See it fully working here

+0

感謝您的解決方案。我知道它必須是簡單的! – wgrills 2011-05-03 12:33:24

+0

完全沒問題! _Sorry_我不得不離開辦公桌,然後才能完全解決問題,並修復了這一點,但我現在已經將其添加到了答案中。 – Scoobler 2011-05-03 12:54:12

0

您的問題是與以下行:

grandTotal += $(this).val.split("£")[1]; 

val是一個函數,而不是返回對象的屬性。你要不要使用以下:

grandTotal += $(this).val().split("£")[1]; 

而且在你的提琴你在你的功能,它位於你的不正確調用val上面的代碼中間有一個return false;。刪除該返回以及。