2012-01-11 60 views
0

好吧,我現在有一個表單可以讓我們選擇某些單選按鈕,但是如果某些單選按鈕被選中,那麼其他人就不能。收音機按鈕總數

我建立了一個JSFIDDLE,所以你可以看到這更容易。我知道代碼可能看起來有點messey。

我遇到的問題是在窗體的底部有一個部分Order Total (excluding VAT):,它加起來的單選按鈕的總數。例如,如果您檢查左上角的單選按鈕(£25第1年所有區塊&單位(總共15個評估)),那麼問題在於在Order Total (excluding VAT):部分顯示總價格爲25英鎊。然後,如果您檢查下方的單選按鈕£47.50,則總價格爲47.50英鎊,這很好。但後來說用戶改變了想法,並追溯了£25英鎊的選擇,它保持£47.50,並增加了25英鎊的頂部,所以它說72.50英鎊,當它應該是25英鎊。你可以看到單選按鈕的價格由data-price="25"

所以我的問題有一個代碼看它是possbile總只有加起來被檢查的單選按鈕?

我認爲這是與它緩存先前已選擇和使用此代碼做什麼?

$('input:radio').change(function(){ 
    var total = 0.0; 
    $('input:radio:checked').each(function(){ 
     total += parseFloat($(this).data('price')); 
    }); 
    $('#total').val(total.toFixed(2)); 
}); 
+0

據我所知,用戶只能爲每個「Key Stage」選擇一個選項,所以你可以通過爲每個Key Stage設置相同的單選按鈕名稱來實現這一點。並控制選擇哪個選項,添加一個新的屬性,而不是使用name屬性。 – ocanal 2012-01-11 10:50:52

+0

@ocanal該部分工作,它是單選按鈕的總和。它是緩存他們,我認爲是這樣,當一個新的選擇它添加它只需要添加選中的單選按鈕。 – Matt 2012-01-11 10:54:59

回答

0

問題是執行順序之一。

您有三組事件處理程序,包括jQuery.on(),jQuery.click()和jQuery.change()。我不想猜測這些事件觸發的順序,並且瀏覽器到瀏覽器的順序很可能不一樣。

因此,求和處理程序可以在其他處理程序之前運行,這就是正在發生的情況。

爲了安全起見,我會爲所有單選按鈕編寫一個唯一的處理程序。內部分支來響應特定情況,然後最後運行求和循環。

+0

我不是最好的jQuery有可能幫助我嗎? – Matt 2012-01-12 09:29:03

相關問題