0

我有选择嵌套的复选框来更改跨度值,但我的问题是当我有两个或更多选择时......我不擅长 javascript =/

如何解决问题:在第二次选择中选择 2 后在第一次选择时选择值 2,在第二次选择时选择 0,在第一次选择时选择 0 总计必须为 0,但我不知道,该怎么做 =/

<div id="test_div">
<input class="test_class" type="checkbox" value="3,00"/>3,00
<input class="test_class" type="checkbox" value="5,00"/>5,00
<input class="test_class" type="checkbox" value="10,00"/>10,00
<input class="test_class" type="checkbox" value="15,00"/>15,00

<select class="test_class">
    <option value="10,00">0</option>
    <option value="10,00">1</option>
    <option value="10,00">2</option>
</select>
<select class="test_class">
    <option value="10,00">0</option>
    <option value="10,00">1</option>
    <option value="10,00">2</option>
</select>
<select class="test_class">
    <option value="10,00">0</option>
    <option value="10,00">1</option>
    <option value="10,00">2</option>
</select>
<span id="total">0,00</span><br/>
</div>

JS:

$(function()
{
   var last = 0;
   $('body').on('change','.test_class', function()
    {
        var vt = parseFloat($('#total').html().replace(',','.'));
        if($(this).is('input:checked'))
        {
           var val = parseFloat($(this).val().replace(',','.'));
           total = val + vt;
        }else if($(this).is('input'))
        {
            var val = parseFloat($(this).val().replace(',','.'));
            total = vt - val;
         }
    if($(this).is('select'))
    {
        var val = parseFloat($(this).val().replace(',','.'));
        var index = $(this).prop('selectedIndex');

    if(index == 0)
    {
        if(last > 0)
        {
            total = vt - val*last;
        }
        last = 0;
    }

    if(index == 1)
    {
        if(last == 2)
        {
            total = vt - val;
        }else
        {
            total = vt + val*index;
        }
        last = 1;
     }

     if(index == 2) 
     {
         if(last == 1)
         {
             total = vt + val;
         }else
         {
             total = vt + val*index;
         }
         last = 2;      
     } 
    }
    total = total.toFixed(2).replace('.',',');
    $('#total').html('').html(total);
    });    
});

示例:http: //jsfiddle.net/jvtcc/8/

4

1 回答 1

0
$("select .test_class").change(function() {
    var total;
    total = 0;
    $("select .test_class").each(function() {
        total += parseInt($(this).value);
    });
    $("#total").text(total + ".00");
});
于 2013-06-12T13:14:19.593 回答