2012-01-11 15 views
0

これで、特定のラジオボタンを選択できるようになりましたが、特定のラジオボタンが選択されていれば他のラジオボタンは選択できません。ラジオボタンの合計

私はJSFIDDLEを設定しましたので、これをもっと簡単に見ることができます。私はコードがちょっと見苦しいかもしれないことを知っています。

私が抱えている問題は、フォームの下部に、ラジオボタンの合計を合計する部分Order Total (excluding VAT):があります。たとえば左上のラジオボタンをチェックした場合(£25 Year 1 All Blocks & Units(合計15件の評価))、Order Total (excluding VAT):セクションでTotal Boxに£25が表示されます。あなたが£47.50であるラジオボタンをチェックすると、合計ボックスに£47.50と書いてあります。しかし、ユーザーが気をつけて、£25.5オプションを取り戻し、£47.50を維持し、£25を追加すると、£72.50となってちょうど£25になるはずだと言います。ラジオボタンの価格は、data-price="25"

で設定されていることがわかります。コードを見て私の質問は、合計がチェックされているラジオボタンを追加する可能性がありますか?

私はこれまでに選択されたことをキャッシュしてこのコードと関係づけることだと思いますか?

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

私は、「キーステージ」ごとに1つのオプションしか選択できないことを理解しています。そのため、ラジオボタンの名前をキーステージごとに同じに設定することで可能です。選択したオプションを制御するために、name属性を使用する代わりに新しい属性を追加します。 – ocanal

+0

@ocanalその部分はラジオボタンの合計です。新しいものが選択されたら、それを追加するだけで、選択されているラジオボタンを追加する必要があると思います。 – Matt

答えて

0

問題は実行順序の1つです。

jQuery.on()、jQuery.click()、jQuery.change()の3つのイベントハンドラが用意されています。私は、これらのイベントが発射される順序を推測するのは嫌いであり、その順序がブラウザーごとに異なる可能性が非常に高いです。

結果的に、集計ハンドラは他のハンドラの前で実行され、それが起こっているように見えます。

私はすべてのラジオボタンに対して1つのユニークなハンドラを書きます。特定のケースに応答するために内部で分岐し、最後に合計ループを実行します。

+0

イムはjQueryでうまくいかないのですが、私を助けてくれるのですか? – Matt