如何使用jquery onchange函数更新输入字段以使其保持运行总量?
e.g。我有以下下拉列表选项:
<select name="select" id="set1">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<select name="select" id="set2">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<input type="text" name="total" id="total" value="" />
当用户从上面的两个下拉列表中选择一个选项时,我需要在输入字段中显示两个选定选项的总和。每次选择不同的选项时,都需要动态更改。你怎么能用jquery实现这个目标?
答案 0 :(得分:1)
您可以执行以下操作:
$('#set1, #set2').on('change', function (e) {
var first = $('#set1').val();
var second = $('#set2').val();
$('#total').val( parseInt(first) + parseInt(second) );
});
这是你想要的吗? JSFiddle(演示)
答案 1 :(得分:0)
$('[name=select]').change(function () {
$('#total').val(Number($('#set1').val()) + Number($('#set2').val()));
});
这会从#set1
和#set2
获取当前选定的值,将它们转换为数字,然后设置#total
元素的值。
要将字符串转换为数字,您可以像我一样使用Number()
方法,以提高可读性。你也可以做$('#set1').val() - 0
,这是不可理解的,但速度要快得多。要查看将字符串转换为数字及其性能的所有方法的比较,请查看:http://jsperf.com/convert-string-to-number-techniques/2
答案 2 :(得分:0)
适用于任何数量的&#39;选择&#39; :
$select = $('select.numberSelect');
$select.on('change', function(){
var total = 0;
$select.each(function(e){
total += parseInt($(this).val()); // or parseInt(e.currentTarget.value)
})
$('#total').val(total);
})
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select class='numberSelect'>
<option>1</option>
<option>2</option>
<option>3</option>
</select>
<select class='numberSelect'>
<option>1</option>
<option>2</option>
<option>3</option>
</select>
<select class='numberSelect'>
<option>1</option>
<option>2</option>
<option>3</option>
</select>
<input type="text" id="total" value="3" />
&#13;
修改:删除了许多无用的东西(名称,ID,值=&#34;&#34;,...)并添加了第三个选择以用于演示目的。
编辑2:添加了一个类来定位特定的&#39;选择&#39;元素,而不是DOM中的其他元素。
答案 3 :(得分:0)
使用你的HTML。如果你有一个动态的选择,可以改进它。
$(document).on("change","#set1,#set2", function() {
var sum = parseInt($("#set1").val()) + parseInt($("#set2").val());
$("#total").val(sum);
});