2010-11-23 99 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真棒小提琴页!