2012-12-27 71 views
1

我試圖建立一個「數字早餐/中餐/晚餐名單」,其中2周以上的空間父母可以選擇他們的孩子是否需要吃早餐,午餐和/或晚餐。這些值將乘以每餐的不同費率以確定發票金額。父母點擊提交按鈕,返回總價值。下面是我到目前爲止有:jQuery的:多個複選框選擇和價格確定

Web窗體:

<input type="checkbox" name="breakfast"> 
<input type="checkbox" name="lunch"> 
<input type="checkbox" name="dinner"> 

有14天,如此反覆每個。所以總共有42個複選框。

的jQuery:

var numBreakfast = $("input:checkbox[name='breakfast']").size(); 
var numLunch = $("input:checkbox[name='lunch']").size(); 
var numDinner = $("input:checkbox[name='dinner']").size(); 

var totalPrice = numBreakfast * priceBreakfast + numLunch * priceLunch + numDinner * priceDinner 

我想我已經得到了這個正確的,但是當我打電話總我不斷收到$ 0.00包裝返回。

任何想法?

+0

.size()只會告訴你,你有多少沒有多少檢查 –

+0

'size'不贊成使用'length'代替 – charlietfl

+0

你的代碼不應該除非價格爲零,否則給你零,或者在元素存在之前運行代碼。應該顯示更多的代碼。這並不意味着你的代碼是正確的就託運,但零shoudn't是發生 – charlietfl

回答

1

試試這個實際上指望有多少項目進行了檢查:

var numBreakfast = $('input:checkbox[name=breakfast]:checked').length; 
// same with all the others 

注意使用length代替size()因爲後來已被棄用。

+0

非常感謝! –

0
function calculate(){ 
var numBreakfast = $("input:checkbox[name='breakfast']"),numBreakfastCount=0 
numLunch = $("input:checkbox[name='lunch']"), numLunchCount=0; 
numDinner = $("input:checkbox[name='dinner']"),numDinnerCount=0, 
priceDinner=2.00,priceLunch=3.00,priceBreakfast=5.00; 

for(i=0;i<numBreakfast.length;i++){ 
    if(numBreakfast[i].checked == true){ 
     numBreakfastCount++ 
    } 
} 

for(i=0;i<numLunch.length;i++){ 
    if(numLunch[i].checked == true){ 
     numLunchCount++ 
    } 
} 

for(i=0;i<numDinner.length;i++){ 
    if(numDinner[i].checked == true){ 
     numDinnerCount++ 
    } 
} 

var totalPrice = (numBreakfastCount * priceBreakfast) + (numLunchCount * priceLunch) + (numDinnerCount * priceDinner); 
console.log(totalPrice); 
} 
+1

你可能也想加入類名給每個輸入,而不是這個$(「輸入:複選框[名稱=‘早餐’]」)做$(「早餐」。) –

+0

此代碼看起來不是特別大......你錯過了分號, 'i'是全局的,在JS中通常會省略'== true',而OP則使用jQuery。 – elclanrs

+0

來吧男人,我做到了4分鐘。 –