我正在尝试将总共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
答案 0 :(得分: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
。
答案 1 :(得分: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>
Sum2: <input name="sum2" id="sum2" type="text" size="4" disabled>
Total: <input name="total" id="total" type="text" size="4" disabled> <br/>
您需要在parseInt
函数中包含base参数,使其为
var value = $(“#sum”)。val();
var base = 10;
var new_value = parseInt(value,base);
答案 2 :(得分:0)
漂亮的编码器 - 谢谢..我用过你的编辑它,因为它给了我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);
});