2011-07-07 44 views
0

ラジオボタンをクリックしたときに小計を変更するjQuery関数を作成しようとしています。 3つ以上のラジオボタンがあります - それぞれは、既存の小計に追加する異なる価格の値を持ちます。jQueryの問題:チェック済みの兄弟

I 既存のラジオボタンが選択されていない場合(このラジオボタンのセット - 同じname属性の場合)、小計を更新します。

HTML::

<input type="radio" value="45" name="timescale" onclick="changePrice(this)"> 

のjQuery:

function changePrice(t){ 
    v = parseInt($(t).val()); 
    s = $("#subtotal");  
    x = parseInt(s.text()); 
    if($(t).siblings("input").is(":checked")){ 
    s.text(x); 
    } else { 
    s.text(x + v); 
    } 
} 

私はラジオボタンの兄弟が選択されている場合if文を確認したいとこれは私が現在持っているものです。これらの場合は、小計s.html()を現在の値に置き換えます。一致しない場合は、s.html()を更新値(現在の値+ラジオボタンの値)に置き換えます。しかし、クリックするたびに、他のラジオボタンがすでに選択されていても小計が更新されます。どこが間違っていますか?

+0

ラジオボタンのセット全体を含むhtmlを投稿できますか?それとも、あなたはただ一人で働いていますか? – user122211

答えて

1

EDIT 問題はchangeイベントの瞬間には、チェックをラジオが(あなたが以前の状態を知らない)既にあるということです。あなたは、このような状態を補助的なvarに保存することができます:

var $checked; //This is the aux var that saves previous state 
$(document).ready(function(){ 
    $checked = $(":radio[name='timescale']:checked"); 
}); 

function changePrice(t){ 
    v = parseInt($(t).val()); 
    s = $("#subtotal");  
    x = parseInt(s.text()); 
    if($checked.size() > 0){ 
    s.text(x); 
    } else { 
    s.text(x + v); 
    } 
    $checked = $(this); 
} 

これは役に立ちます。歓声

+0

aux varは何を解決したのです、ありがとう! – hohner

関連する問題