2010-11-23 98 views
0

我有一個問題,我似乎無法解決如何解決它。我有兩個複選框,它們都具有值5.我只需要在複選框被選中時將5的值添加到變量中,並且在未選中時扣除5。我一直在使用jQuery,但到目前爲止,我只設法添加5,並且它增加了10,當他們都被選中時。它現在不會扣除任何東西。由於我有一些單選按鈕,我正確檢查,我的代碼是這樣的。問題與複選框狀態

$(":checked").each(function(){ 
    if ($(this).attr("type") == "checkbox"){ 
     pricediff += 5; 
    } 
} 

作爲各自使用的功能,當它們都被檢查時它增加10。這當然不是我想要的。當複選框未選中時,它仍然必須扣除5。我不知道如何做到這一點 - 我對jQuery和JavaScript有些不屑一顧。任何人都可以幫我嗎?謝謝

P.S.這不是確切的代碼,而只是它的主旨。

+0

爲了提高人們幫助你的機會,建議首先接受你以前的問題的答案。 – 2010-11-23 06:48:34

回答

1

樣本HTML

<input type="checkbox" class="test" /> 
<input type="checkbox" class="test" /> 
<input type="checkbox" class="test" /> 
<input type="checkbox" class="test" /><br /> 
<span id="result">0</span> 

腳本

$(function(){ 
    $("input:checkbox.test").click(function(){ 
     var checked = $("input:checkbox.test:checked").length; 
     var checkedValue = checked * 5; 

     $("#result").text(checkedValue) 
    }); 
}); 

看到一個working demo

+0

謝謝。這是最合理的答案。我知道它在這裏有效,但是在我的代碼中,它並不像它應該那樣工作,因爲有更多的值,它們都必須被添加。而且我不能只是一直添加checkedValue。我必須知道何時扣除。感謝您的幫助,但您已經帶領我走上正軌。 – donkapone 2010-11-23 07:32:32

1

嘗試這樣的事情
var placediff;
function calc()
{
var n = $("input:checked").length;
pricediff = n*5;
}
$(":checkbox").click(calc);

+0

這是對的。我檢查了我的代碼的上下文,它不起作用。它確實回答了我確切的問題,它的確如我所問的那樣工作。謝謝。 – donkapone 2010-11-23 07:33:45

2

@rahul有一個很好的答案,但是這意味着所有的複選框必須有5

值試試這個演示:http://jsfiddle.net/2WJZ4/

HTML:

<input type="checkbox" class="test" value="5" /> 
<input type="checkbox" class="test" value="7" /> 
<input type="checkbox" class="test" value="2" /> 
<input type="checkbox" class="test" value="1" /><br /> 
<span id="result">0</span> 

腳本:

$(function(){ 
    $("input.test").change(function(){ 
     var $this = $(this); 
     var value = $this.val(); 
     var checked = $this.is(":checked"); 
     if (checked) value = -value; 
     var $r = $('#result'); 
     $r.text((+$r.text()) - value) 
    }); 
}); 

PS。 @rahul真棒小提琴頁!