0

我正在尝试将 2 个禁用的输入框加起来。我一直得到 0 的值。我认为这是因为那是页面加载时的值。但我不确定。

我的js:

$(document).on('change', '.var1', function(){
    var total = 0;
    $('.var1').each(function() {
        total += parseFloat($(this).val());
    });
    $('#sum').val(total)
});

$(document).on('change', '.var2', function(){
    var total = 0;
    $('.var2').each(function() {
        total += parseFloat($(this).val());
    });
    $('#sum2').val(total)
});

$(document).ready(function(){
var a = +$('input[name=sum]').val();
var b = +$('input[name=sum2]').val();
var total = a+b;
$('#total').val(a+b);

});

html:

print "<select class=\"var1\" name=\"var1[$transnum]\">"; var1_list(); 
print "</select>\n";
print "<select class=\"var2\" name=\"var2[$transnum]\">"; var2_list(); 
print "</select>\n";

print "<input name=\"sum\" id=\"sum\" type=\"text\" size=\"4\"/ disabled>\n"; //add up 1
print "<input name=\"sum2\" id=\"sum2\" type=\"text\" size=\"4\"/ disabled>\n"; //add up 2
print "<input name=\"total\" id=\"total\" type=\"text\" size=\"4\"/ disabled>\n"; // add up total
4

3 回答 3

1

这是我在不知道所有信息的情况下所做的。 http://jsfiddle.net/9neYY/

编辑我的第一个代码和 jsfiddle 中有错字...我修复了它

// initialize things... 
update_sum();  
update_sum2(); 
update_total(); 

$(document).on('change', '.var1', function(){
    console.log('var 2 change'); 
    update_sum(); 
    update_total(); 
});

function update_sum(){ 
    var total = 0;
    $('.var1').each(function() {
        total += parseFloat($(this).val(),10);
    });
    $('#sum').val(total);  
};

$(document).on('change', '.var2', function(){
    var total = 0;
    console.log('var 2 change'); 
    update_sum2(); 
    update_total(); 
});

function update_sum2(){ 
    var total = 0;
    $('.var2').each(function() {
        total += parseFloat($(this).val(),10);
    });
    $('#sum2').val(total);  
};

function update_total(){
  var a = +$('input[name=sum]').val();
  var b = +$('input[name=sum2]').val();
  var total = a+b;
  $('#total').val(a+b); 
};

我使用的 HTML:

<select class="var1" name="var1[]">
    <option value=1>1</option>
    <option value=2>2</option>
    <option value=3>3</option>
    <option value=4>4</option>
    <option value=5>5</option>
</select>
<select class="var2" name="var2[]">
    <option value=1>1</option>
    <option value=2>2</option>
    <option value=3>3</option>
    <option value=4>4</option>
    <option value=5>5</option>
</select><br/><br/>

Sum:<input name="sum" id="sum" type="text" size="4" disabled>&nbsp;&nbsp;&nbsp;&nbsp;

Sum2: <input name="sum2" id="sum2" type="text" size="4" disabled>&nbsp;&nbsp;&nbsp;&nbsp;

Total: <input name="total" id="total" type="text" size="4" disabled> <br/>
  • 我不确定您在代码中使用类...
  • 您需要在parseInt函数中包含基本参数,以便它是

    var value = $("#sum").val();
    变量基数 = 10;
    var new_value = parseInt(value, base);

于 2013-10-31T17:50:11.177 回答
1

尝试

$(document).on('change', '.var1', function(){
    var total = 0;
    $('.var1').each(function() {
        total += parseFloat($(this).val());
    });
    $('#sum').val(total)
    $('#total').val($('#sum').val()+$('#sum2').val());
});

$(document).on('change', '.var2', function(){
    var total = 0;
    $('.var2').each(function() {
        total += parseFloat($(this).val());
    });
    $('#sum2').val(total)
    $('#total').val($('#sum').val()+$('#sum2').val());
});

#total每次都要计算。

于 2013-10-31T17:39:37.440 回答
0

beautifulcoder - 谢谢你.. 我使用你的并编辑它,因为它给了我价值 1+1=11..

这有效:

$(document).on('change', '.var1', function(){
    var total = 0;
    $('.var1').each(function() {
        total += parseFloat($(this).val());
    });
    $('#sum').val(total)
    var a = +$('#sum').val();
    var b = +$('#sum2').val();
    $('#total').val(a+b);
});

$(document).on('change', '.var2', function(){
    var total = 0;
    $('.var2').each(function() {
        total += parseFloat($(this).val());
    });
    $('#sum2').val(total)
    var a = +$('#sum').val();
    var b = +$('#sum2').val();
    $('#total').val(a+b);
});
于 2013-10-31T17:47:50.690 回答