1

ラジオ ボタンの 4 つのグループがあり、各グループには 4 つのボタンがあります。各ボタンには、| で区切られた 2 つの値が設定されています。すなわち:

<input type="radio" id="t20" name="train2" value="0|0">
<input type="radio" id="t20" name="train2" value="5|0.19">
<input type="radio" id="t20" name="train2" value="10|0.19">
<input type="radio" id="t20" name="train2" value="15|0.19">

4 つのグループすべてが上記の例に従います。ボタン 2、3、および 4 の最初の値は異なる番号で、2 番目の値は同じ番号です。各グループから 1 つのボタンのみがチェックされています。

チェックされたボタンの値を計算する必要がある Java スクリプトがあります。

$(document).ready(function()
{   
var total = 0;
function calcTotal()
{
    $("input:checked").each(function()
    {
        var value = $(this).attr("value");
        var array = value.split('|')
        var firstValue = array[0];
        var secondValue = array[1];
        total += parseFloat(firstValue);
    });
}
calcTotal();
$("sum").before('<font class="total" style="font-family: Myriad Pro, Gill Sans, Gill Sans MT, Calibri, sans-serif; font-size: 18px; font-weight: bold;">' + total + '</font>');
});

チェックされたラジオ ボタンの最初の値の合計の結果は OK です。選択の一部を変更すると、一部が更新されます。

私が正しくできないのは、2番目の値の合計を計算して同じ方法で出力することです。私は運がない日のために努力してきました。

チェックされたボタンの合計のみが必要です。しかし、最初の値の合計と2番目の値の合計が1回必要です

2 各グループで 1 つのボタンのみをチェックしました。これが必要な理由であり$("input:checked").each(function()、1 つのグループの 4 つのボタンの合計ではありません。

NOTE3フルコードhttp://jsfiddle.net/P3ZyH/10/

どんな助けでも大歓迎です。


ついに何が問題なのかがわかりました...頭で壁を突き破るのを止めるのは非常に困難でした.

2 つのラフィオ ボタンの最後のグループがあり、2 番目の値を割り当てるのを忘れていました。SO今、すべてが正常に動作しています。

興味のある方はhttp://jsfiddle.net/milenmk/P3ZyH/17/

4

2 に答える 2

1

jsfiddle でこのソリューションを確認してください。

基本的に、合計変数にスコープの問題があり、最初の値のみを合計していました。total を配列に変更し、両方の値を合計しました。

あなたが望むように聞こえるのは、チェックボックスであり、ボックスをチェックするたびに合計を更新することですか? これは、

$('#checkboxes').on("change",calcTotal);

チェックボックスフィールドに。

于 2012-05-13T12:19:45.053 に答える
0

同じ名前のラジオ ボタンの各セットは、選択したラジオ ボタンの値のみを返します。それらすべての値を見つけたい場合は、値を選択しないでください:checked

$(":radio").each(function(){

})

http://jsfiddle.net/KRMjX/

change選択した入力に対して何らかのアクションを実行する場合は、イベント ハンドラーを使用できます。

$("input:checked").change(function(){
    var value = $(this).attr("value");
    var array = value.split('|')
    var firstValue = array[0];
    var secondValue = array[1];
    total += parseFloat(firstValue);
})

最初の 2 つの入力の値のみを確認する場合は、次のようにしてください。

$(":radio").each(function(i, v){
    if (i < 2) {
    var value = $(this).attr("value");
    var array = value.split('|')
    var val = array[0];
    var secondValue = array[1];
    total = parseFloat(val);
    }
})

http://jsfiddle.net/KRMjX/1/

于 2012-05-13T12:13:57.310 に答える